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

时间:2010-05-01 18:22:40

标签: javascript dom textnode

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

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

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

我正在考虑索引所有文本节点并检查每个被搜索字符串的索引,但是,在我的项目中,没有办法告诉DOM何时更新以保持这样的索引到达 - 日期。

有更好的想法吗?

由于

3 个答案:

答案 0 :(得分:20)

如果你有一个现代浏览器,你总是可以使用XPATH,因为它有基于内容的搜索。

这是一个例子:

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

使用旧版浏览器,您可以使用http://llamalab.com/js/xpath/

等内容来填充XPATH

答案 1 :(得分:4)

来自jquery的'contains'选择器会解决问题吗?

http://api.jquery.com/contains-selector/

答案 2 :(得分:1)

一般DOM:用于在DOM中逐个文本获取

//*[text()='anytext']

//*[.='anytext']