Подтвердить что ты не робот

Заменить слова в тексте тела

Есть ли способ заменить обычный текст внутри элемента таблицы, который помещен в тело HTML?

Как заменить "привет" на "привет"?

Используйте JavaScript только jQuery.

4b9b3361

Ответ 1

Чтобы заменить строку вашего HTML на другую, используйте replace метод innerHTML.

document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');

Обратите внимание, что это заменит первый экземпляр hello по всему телу, включая любые экземпляры вашего HTML-кода (например, имена классов и т.д.), поэтому используйте с осторожностью - для получения лучших результатов попробуйте ограничить область своей с помощью document.getElementById или аналогичного.

Чтобы заменить все экземпляры целевой строки, используйте простое регулярное выражение с флагом g lobal:

document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');

Ответ 2

Функция ниже отлично работает для меня:

// Note this *is* JQuery, see below for JS solution instead
function replaceText(selector, text, newText, flags) {
  var matcher = new RegExp(text, flags);
  $(selector).each(function () {
    var $this = $(this);
    if (!$this.children().length)
       $this.text($this.text().replace(matcher, newText));
  });
}

Вот пример использования:

function replaceAllText() {
  replaceText('*', 'hello', 'hi', 'g');
}

$(document).ready(replaceAllText);
$('html').ajaxStop(replaceAllText);

Вы также можете использовать прямую замену так:

document.body.innerHTML = document.body.innerHTML.replace('hello', 'hi');

Но будьте осторожны, поскольку это может повлиять на теги, css и скрипты.

EDIT: Что касается чистого решения JavaScript, используйте этот метод:

function replaceText(selector, text, newText, flags) {
  var matcher = new RegExp(text, flags);
  var elems = document.querySelectorAll(selector), i;

  for (i = 0; i < elems.length; i++)
    if (!elems[i].childNodes.length)
      elems[i].innerHTML = elems[i].innerHTML.replace(matcher, newText);
}

Ответ 3

У меня была та же проблема. Я написал свою собственную функцию, заменив ее на innerHTML, но она будет засовывать якорные ссылки и т.д.

Чтобы он работал правильно, я использовал library, чтобы сделать это.

В библиотеке есть удивительный API. После включения script я назвал его следующим:

findAndReplaceDOMText(document.body, {
  find: 'texttofind',
  replace: 'texttoreplace'
  }
);

Ответ 4

Я пытался заменить действительно большую строку, и по некоторым причинам регулярные выражения бросали некоторые ошибки/исключения.

Итак, я нашел эту альтернативу регулярным выражениям, которые также выполняются довольно быстро. По крайней мере, это было достаточно быстро для меня:

var search = "search string";
var replacement = "replacement string";

document.body.innerHTML = document.body.innerHTML.split(search).join(replacement)

src: Как заменить все вхождения строки в JavaScript?

Ответ 5

Использовать функцию замены строки javascript по умолчанию

var curInnerHTML = document.body.innerHTML;
curInnerHTML = curInnerHTML.replace("hello", "hi");
document.body.innerHTML = curInnerHTML;

Ответ 6

Я новичок в Javascript и только начал изучать эти навыки. Проверьте, подходит ли метод ниже для замены текста.

<script>

    var txt=document.getElementById("demo").innerHTML;
    var pos = txt.replace(/Hello/g, "hi")
    document.getElementById("demo").innerHTML = pos;

</script>