0

我正在尝试使用 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++;
}

但字符串没有被替换......请帮助

4

3 回答 3

3

document.body=node;在最后添加。当您将节点设置为相等主体时,您正在复制该值,而不是通过引用对其进行编辑。

于 2013-11-14T06:17:19.980 回答
2

我不确定您为什么要直接使用文本节点。console.logonnodeValue表示显示标签的 textContent 既没有被检索到也没有在你的代码中设置。

这很好用。现场演示(点击)。

<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");
  }
}
于 2013-11-14T06:31:19.287 回答
1

使用 String 方法有一个更简单的replace方法。例如,您可以将页面正文转换为字符串并使用正则表达式替换单词。这意味着您可以避免遍历整个 DOM 和节点列表,这对您的任务来说是不必要的缓慢。

document.getElementByTagName("body")[0].innerHTML.replace("injected","hai")

于 2013-11-14T06:19:15.170 回答