Я пытаюсь заменить слово в html-документе выбранным словом, используя 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++;
}
но строка не заменяется...
Добавить document.body=node;
в конце. Когда вы устанавливаете узел равным телу, вы копируете значение, а не редактируете его по ссылке.
Я не уверен, почему вы пытаетесь напрямую работать с текстовым узлом. console.log
on nodeValue
показывает, что 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");
}
}
Существует гораздо более простой метод, использующий метод replace
String. Например, вы можете преобразовать тело страницы в строку и использовать регулярные выражения для замены слова. Это означает, что вы можете избежать прохождения всех списков DOM и узлов, что излишне медленно для вашей задачи.
document.getElementByTagName("body")[0].innerHTML.replace("injected","hai")