JS DOM:按文本内容获取元素

Hri*_*sto 14 javascript dom textnode

我正在寻找一种使用JS在DOM树上执行全文搜索的方法.换句话说,我想检索包含给定字符串的文本节点列表.

我已经尝试过mootools' Element.getElements ( ':contains[string]' )但是我无法使用包含空格的字符串.

编辑:jQuery和mootools似乎让他们的:contains运算符通过树遍历工作.这意味着搜索页面没有本地方式,这是正确的吗?如果页面很大,并且您对元素的唯一信息是要搜索的字符串,则效率非常低.我错了吗?

我在想索引的所有文本节点,并核对了被搜索的每个字符串的索引,但是,在我的项目,有没有办法告诉时,为了保持这样的指数最高最新的DOM更新.

有更好的想法吗?

谢谢

ble*_*rik 21

如果您有一个现代浏览器,您可以始终使用XPATH,因为它具有基于内容的搜索.

这是一个例子:

document.evaluate('//*[text()="' + string + '"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE).snapshotItem(0);
Run Code Online (Sandbox Code Playgroud)

使用旧版浏览器,您可以使用http://llamalab.com/js/xpath/之类的东西来填充XPATH.