我想替换给定元素的所有后代元素(的文本)中的特定字符串。
innerHTML
不能使用,因为此序列可以出现在属性中。我曾尝试使用 XPath,但似乎界面本质上是只读的。因为这仅限于一个元素,document.getElementsByTagName
所以也不能使用类似的功能。
有人可以建议任何方法吗?任何 jQuery 或纯 DOM 方法都是可以接受的。
编辑:
一些答案暗示了我试图解决的问题:直接在元素上修改文本将导致所有非文本子节点被删除。
所以问题本质上归结为如何有效地选择树中的所有文本节点。在 XPath 中,您可以轻松地做到这一点//text()
,但当前的 XPath 界面似乎不允许您更改这些 Text 节点。
一种方法是通过递归,如Bergi的回答所示。另一种方法是使用find('*')
jQuery 的选择器,但是这样有点贵。仍在等待,看看是否有更好的解决方案。