Есть ли способ заменить обычный текст внутри элемента таблицы, который помещен в тело HTML?
Как заменить "привет" на "привет"?
Используйте JavaScript только jQuery.
Есть ли способ заменить обычный текст внутри элемента таблицы, который помещен в тело HTML?
Как заменить "привет" на "привет"?
Используйте JavaScript только jQuery.
Чтобы заменить строку вашего 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');
Функция ниже отлично работает для меня:
// 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);
}
У меня была та же проблема. Я написал свою собственную функцию, заменив ее на innerHTML, но она будет засовывать якорные ссылки и т.д.
Чтобы он работал правильно, я использовал library, чтобы сделать это.
В библиотеке есть удивительный API. После включения script я назвал его следующим:
findAndReplaceDOMText(document.body, {
find: 'texttofind',
replace: 'texttoreplace'
}
);
Я пытался заменить действительно большую строку, и по некоторым причинам регулярные выражения бросали некоторые ошибки/исключения.
Итак, я нашел эту альтернативу регулярным выражениям, которые также выполняются довольно быстро. По крайней мере, это было достаточно быстро для меня:
var search = "search string";
var replacement = "replacement string";
document.body.innerHTML = document.body.innerHTML.split(search).join(replacement)
Использовать функцию замены строки javascript по умолчанию
var curInnerHTML = document.body.innerHTML;
curInnerHTML = curInnerHTML.replace("hello", "hi");
document.body.innerHTML = curInnerHTML;
Я новичок в Javascript
и только начал изучать эти навыки. Проверьте, подходит ли метод ниже для замены текста.
<script>
var txt=document.getElementById("demo").innerHTML;
var pos = txt.replace(/Hello/g, "hi")
document.getElementById("demo").innerHTML = pos;
</script>