Tysro
Tysro

Reputation: 111

Replacing content of html document

I am trying to replace a word in an html document with selected word using javascript.

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++;
}

but string is not getting replaced...pls help

Upvotes: 0

Views: 78

Answers (3)

m59
m59

Reputation: 43785

I'm not sure why you're trying to work with the text node directly. console.log on nodeValue shows that the textContent of displayed tags is neither retrieved nor set in your code.

This works great. Live demo here (click).

<p>something to be replaced.</p>

and the 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");
  }
}

Upvotes: 2

Shrey Gupta
Shrey Gupta

Reputation: 5617

There is a much simpler method using the String replace method. For example, you can convert the body of the page into a string and use regular expressions to replace the word. This means that you can avoid having to traverse the entire DOM and node lists, which is unnecessarily slow for your task.

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

Upvotes: 1

ddoor
ddoor

Reputation: 5973

Add document.body=node; at the end. When you set node to equal body you are copying the value, not editing it by reference.

Upvotes: 3

Related Questions