Javascript 包含字符串的文本元素的DOM查询

Javascript 包含字符串的文本元素的DOM查询,javascript,dom,Javascript,Dom,我调用了以下文本节点(在中的节点): <g id="shape29-19"> <text x="18" y="600"> <v:paragraph></v:paragraph> <v.tabList></v:tabList> "Cash Net" </text> </g> “现金净额” 使用以下查询:document.querySe

我调用了以下文本节点(在
中的节点):

<g id="shape29-19">
    <text x="18" y="600">
        <v:paragraph></v:paragraph>
        <v.tabList></v:tabList>
        "Cash Net"
    </text>
</g>

“现金净额”

使用以下查询:
document.querySelector(“shape29-19>text”)
。如何更改JavaScript查询,以便返回包含包含“
'Cash Net'
”字符串的文本节点的所有元素?

您可以将其过滤掉:

var elems = Array.prototype.filter.call(
    document.querySelectorAll("#shape29-19 > text"),function(x) {
    return x.textContent.indexOf('"Cash Net"') > -1;
}); // elems contains the elements which you're looking for

如果可能,最好修改结构,以便将文本包装在元素中。按文本内容选择DOM并不是最好的方法。这是页面的呈现方式,我没有选择节点的结构方式。您只需选择
文本
元素,并将集合筛选为包含该文本的元素。只需使用
querySelectorAll
.filter()
for
循环即可。我可以用标记名替换查询中的ID选择器吗?请注意。。。您可以将其缩小为
文本
,而不是
*
;返回的节点集合没有
.filter()
方法;
.innerText
属性是非标准的,因此请改用
.textContent
;无需
true:false
,只需返回
@斜视的结果,我实现了
.filter
,因此将其转换为数组,并感谢其他建议。合并:)+1看起来不错。最后一个提示。不要借用
.slice()
来执行
.filter()
操作,只需借用
.filter()
并跳过
.slice()
。所以
Array.prototype.filter.call(document.queryselectoral(…
)。这样做会更简短更快。:@Xenyal:调试它以找出原因。