我正在尝试使用javascript将所选单词替换为html文档中的单词。
的JavaScript
var node=document.body;
var childs=node.childNodes;
var n=childs.length,i=0;
while (i < n) {
node=childs[i];
if (node.nodeType == 3) {
if (node.textContent) {
node.nodeValue=node.nodeValue.replace("injected","hai");
}
}
i++;
}
但是字符串没有被替换...请帮助
答案 0 :(得分:3)
最后添加document.body=node;
。当您将节点设置为相等的主体时,您正在复制该值,而不是通过引用对其进行编辑。
答案 1 :(得分:2)
我不确定你为什么要直接使用文本节点。 console.log
上的nodeValue
表示您的代码中既未检索也未设置显示标记的textContent。
这很有效。 Live demo here (click).
<p>something to be replaced.</p>
和js:
var childs = document.body.childNodes;
var len = childs.length;
for (var i=0; i<len; ++i) {
var node=childs[i];
if (node.nodeName === 'P') {
node.textContent = node.textContent.replace("to be replaced","was replaced");
}
}
答案 2 :(得分:1)
使用String replace
方法有一个更简单的方法。例如,您可以将页面正文转换为字符串,并使用正则表达式替换单词。这意味着您可以避免遍历整个DOM和节点列表,这对您的任务来说是不必要的慢。
document.getElementByTagName("body")[0].innerHTML.replace("injected","hai")