getElementsByTagName("*")
将为您提供 Depth First Search in Pre-order
中的子节点。问题是,如果我在节点的 HTML 中搜索字符串,则无法判断该字符串是否在 getElementsByTagName("*")
将返回的另一个子节点中。 。那么,有没有办法从叶子到根迭代节点呢?
最有可能的是DFS-Post order
会成功的!
例如:
<div id=""master">
<div id="id1">
<div id="id2">
<span>text</span><i>more text</i>
</div>
</div>
</div>
如果我们正在搜索 <i>more text</i>
,那么结果的第一个元素的innerHTML以及所有后续元素将匹配。但我只希望确切的 child 与字符串匹配。如果我们从叶子开始,那么我们可以 break
找到文本后离开。
还有其他想法吗?
最佳答案
如果您必须实际执行此文本搜索,请确保 nodeType === 3
然后检查nodeValue
对于字符串。您实际想要返回的节点是该节点的 parentNode
。
不过,我认为总的来说这是一个坏主意,如果您希望所述元素的内容发生更改(这就是您搜索它的原因),请附加一个事件处理程序来监听更改。
关于javascript - 使用 javascript 通过 HTML 搜索确切的子节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17623411/