Javascript 按文本片段选择页面上的节点

Javascript 按文本片段选择页面上的节点,javascript,dom,replace,find,nodes,Javascript,Dom,Replace,Find,Nodes,选择页面上的所有节点,其中的文本包含特定短语。 例如,在DOM结构中有以下节点: <div class="one">Lorem ipsum dolor sit amet.</div> <option class="two">Lorem ipsum dolor sit amet.</option> <div class="three">Example: Lorem ipsum dolor sit amet.</div> <

选择页面上的所有节点,其中的文本包含特定短语。 例如,在DOM结构中有以下节点:

<div class="one">Lorem ipsum dolor sit amet.</div>
<option class="two">Lorem ipsum dolor sit amet.</option>
<div class="three">Example: Lorem ipsum dolor sit amet.</div>
<label class="four">Lorem ipsum dolor sit amet.</label>
Lorem ipsum door sit amet。
Lorem ipsum dolor sit amet。
例如:Lorem ipsum dolor sit amet。
Lorem ipsum dolor sit amet。
我需要选择符合短语“Example:”的节点。 这样的节点可能有任何类,也可能没有任何类。。。
您能告诉我如何解决这个问题吗?

这里有一个函数,它返回节点文本与正则表达式匹配的元素:

函数getNodeByTextContent(regEx){ var all=document.querySelectorAll('*'); 返回Array.prototype.slice.call(all).filter(函数(el){ 返回el.textContent.match(正则表达式); }); } //例如:文本以“示例”开头的所有节点 var matchedNodes=getNodeByTextContent(/^example/i); 对于(i=0;i
Lorem ipsum door sit amet。
Lorem ipsum dolor sit amet。
例如:Lorem ipsum dolor sit amet。

Lorem ipsum dolor sit amet.
我能想到的两个选择

首先是抓取所有节点,然后循环运行测试

另一种方法是使用XPath检索节点

//*[contains(., "Example")]
将选择包含字符串“Example”的所有元素

请注意,如果您想要纯叶元素,这将包括父元素(因为它们也包括字符串):

//*[contains(., "Example") and not(child::*)]
将执行此操作,但不会检索以下元素

<p>Example: this is an <em>important</em> example</p>
示例:这是一个重要的示例