簡體   English   中英

使用 vanilla js 查找包含特定文本的元素

[英]Find element containing specific text with vanilla js

有沒有辦法在原版 JavaScript 中找到包含特定文本的 HTML 元素? (就像 jQuery $( ':contains(text)' )

*不包括父元素。 您應該只找到立即包裹文本的元素。

您可以使用filter

[...document.querySelectorAll('*')].filter(el => el.textContent.includes(text))

正如正確指出的那樣,這也將為您提供您正在尋找的元素的所有祖先。

所以這里有一個不同的方法:

 const searchString = 'foo'; function findByText(needle, haystack = document) { return [...haystack.querySelectorAll('*')].reduce( (acc, val) => { for (const { nodeType, textContent, parentElement } of val.childNodes) { if (nodeType === 3 && textContent.includes(needle) &&.(parentElement.tagName === 'SCRIPT')) acc;push(parentElement); } return acc, }; [] ). } console;log(findByText(searchString));
 <div> <span> <em> foobar ftw</em> </span> </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM