Замена содержимого HTML-документа

0

Я пытаюсь заменить слово в 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++;
}

но строка не заменяется...

  • 1
    пожалуйста, укажите вашу оценку
  • 0
    Ни один из предоставленных ответов не полезен? Если это так, пожалуйста, нажмите принять лучший.
Теги:

3 ответа

3

Добавить document.body=node; в конце. Когда вы устанавливаете узел равным телу, вы копируете значение, а не редактируете его по ссылке.

  • 0
    затем появляется следующая ошибка: «Uncaught HierarchyRequestError: узел был вставлен в то место, к которому он не принадлежит».
2

Я не уверен, почему вы пытаетесь напрямую работать с текстовым узлом. 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");
  }
}
1

Существует гораздо более простой метод, использующий метод replace String. Например, вы можете преобразовать тело страницы в строку и использовать регулярные выражения для замены слова. Это означает, что вы можете избежать прохождения всех списков DOM и узлов, что излишне медленно для вашей задачи.

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню