JavaScript dom 节点 xpath 查询:精准定位子元素
本文介绍如何在 JavaScript 中,利用 XPath 表达式从指定的 DOM 节点开始查找元素。 许多开发者在使用 document.evaluate() 方法时,常常遇到从根节点而非指定节点开始查找的问题。
例如,开发者希望在一个 class 为 “menu” 的 div 元素下,查找所有 input 元素,或者更精确地,查找 class 为 “tInput” 且 value 为 “100” 的 input 元素。 直接使用 //input 会从整个文档根节点开始搜索,而非从指定的 “menu” 节点开始。
关键在于理解 XPath 表达式的相对路径。 //input 表示查找文档中所有 input 元素。要从特定节点(例如,menu 节点)开始查找,需要使用相对路径表达式。
正确的 XPath 表达式
立即学习“Java免费学习笔记(深入)”;
要从当前节点开始查找所有 input 子孙节点,应使用 .//input。 点号 (.) 代表当前节点。 因此,document.evaluate(‘.//input’, menu, NULL, XPathResult.ANY_TYPE, null); 将从 menu 节点开始递归搜索所有 input 子节点。
更复杂的条件查找
对于更复杂的条件,例如查找 class 为 “tInput” 且 value 为 “100” 的 input 元素,可以使用以下 XPath 表达式:
.//input[@class=’tInput’ and @value=’100′]
此表达式结合了属性选择器,精确地定位目标元素。 注意属性值需要用单引号或双引号括起来。 将此表达式与 document.evaluate 方法结合使用,即可在 menu 节点下进行精准查找。 通过这种方法,您可以有效地从任何指定的 DOM 节点开始,使用 XPath 表达式进行精确的元素查找。