Javascript 替换正文中的单词
有没有一种方法可以替换HTML主体中的table元素中的普通文本 比如用“你好”代替“你好”Javascript 替换正文中的单词,javascript,html,Javascript,Html,有没有一种方法可以替换HTML主体中的table元素中的普通文本 比如用“你好”代替“你好” 请仅使用JavaScript而不使用jQuery将HTML中的字符串替换为另一个字符串。请使用以下方法: 请注意,这将在整个正文中替换hello的第一个实例,包括HTML代码中的任何实例(例如,类名等),因此请谨慎使用-为了获得更好的结果,请尝试通过使用或类似的代码来限制替换范围 要替换目标字符串的所有实例,请使用带有global标志的简单正则表达式: document.body.innerHTML =
请仅使用JavaScript而不使用jQuery将HTML中的字符串替换为另一个字符串。请使用以下方法: 请注意,这将在整个正文中替换
hello
的第一个实例,包括HTML代码中的任何实例(例如,类名等),因此请谨慎使用-为了获得更好的结果,请尝试通过使用或类似的代码来限制替换范围
要替换目标字符串的所有实例,请使用带有g
lobal标志的简单正则表达式:
document.body.innerHTML = document.body.innerHTML.replace(/hello/g, 'hi');
使用默认的javascript字符串替换函数
var curInnerHTML = document.body.innerHTML;
curInnerHTML = curInnerHTML.replace("hello", "hi");
document.body.innerHTML = curInnerHTML;
下面的功能非常适合我:
// 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和脚本
编辑:
对于纯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);
}
函数替换文本(选择器、文本、新文本、标志){
var matcher=newregexp(文本、标志);
var elems=document.querySelectorAll(选择器),i;
对于(i=0;i
我也有同样的问题。我在innerHTML上使用replace编写了自己的函数,但它会破坏锚定链接等
为了使它正常工作,我使用了一个工具来完成这项工作
这个库有一个很棒的API。包括脚本后,我这样称呼它:
findAndReplaceDOMText(document.body, {
find: 'texttofind',
replace: 'texttoreplace'
}
);
replaceInText(document.body,"search term","replacement");
我不熟悉
Javascript
,刚刚开始学习这些技能。请检查以下方法是否有助于替换文本
<script>
var txt=document.getElementById("demo").innerHTML;
var pos = txt.replace(/Hello/g, "hi")
document.getElementById("demo").innerHTML = pos;
</script>
var txt=document.getElementById(“demo”).innerHTML;
var pos=txt.replace(/Hello/g,“hi”)
document.getElementById(“demo”).innerHTML=pos;
我试图替换一个非常大的字符串,出于某种原因,正则表达式抛出了一些错误/异常
所以我找到了正则表达式的另一种选择,它也运行得非常快。至少对我来说足够快:
var search = "search string";
var replacement = "replacement string";
document.body.innerHTML = document.body.innerHTML.split(search).join(replacement)
src:尝试在相当大的文档上应用上述建议的解决方案,替换innerHTML甚至innerText中可能存在的非常短的字符串,这样您的html设计最多也会被破坏 因此,我首先通过HTMLDOM节点只拾取文本节点元素,如下所示
function textNodesUnder(node){
var all = [];
for (node=node.firstChild;node;node=node.nextSibling){
if (node.nodeType==3) all.push(node);
else all = all.concat(textNodesUnder(node));
}
return all;
}
textNodes=textNodesUnder(document.body)
for (i in textNodes) { textNodes[i].nodeValue = textNodes[i].nodeValue.replace(/hello/g, 'hi');
`接下来,我在循环中对所有文本进行了替换我最终使用了此功能,以安全地替换文本而无副作用(到目前为止):
它适用于16kB的文件有点太重的情况。希望添加一个示例,因为我不断遇到此错误:
Uncaught TypeError: element.childNodes is not iterable
这样使用:
findAndReplaceDOMText(document.body, {
find: 'texttofind',
replace: 'texttoreplace'
}
);
replaceInText(document.body,"search term","replacement");
对于我来说,jQuery选择器不起作用。有时更改
document.body.innerHTML会破坏页面上的一些JS脚本。以下是仅更改文本
元素内容的版本:
函数替换(元素、从、到){
if(element.childNodes.length){
forEach(child=>replace(child,from,to));
}否则{
const cont=element.textContent;
如果(cont)element.textContent=cont.replace(from,to);
}
};
替换(document.body,new RegExp(“hello”、“g”)、“hi”);
使用innerHTML.replace
会很快工作,这会破坏DOM状态
您可以通过在输入字段上设置“autofocus”
,然后在body上更改innerHTML
,来复制这一点,它将失去焦点
破坏性较小的方法是:
//检索主体的所有子节点
var childNodes=document.body.childNodes;
//开始更换
替换节点(子节点,“搜索”、“替换”);
函数replaceInNodes(节点、搜索、替换){
//遍历所有节点
对于(var i=0;i
更多信息可在此处找到:
注意:我是上述链接的作者你能说得更具体些吗?你想替换什么,它在主体中的位置,等等。主体有一个div,在这个表中,我想替换一些普通的文本,而不是像用(“hi”)替换(“hello”)这样的代码。如果替换的单词恰好是类名,下面的大多数解决方案都会破坏所有事件和整个dom结构,标记名或htmlIt中的任何内容看起来问题和答案都是错误的。它询问如何替换单词而不是字符。例如替换此hello,这是一个文本随机文本hello
应该是hi,这是一个文本随机文本hello
。但是,这里的所有其他答案都替换了字符而不是单词。我认为这比这里的答案要好。这里对我不起作用是我使用的window.onload=clear();函数clear(){document.body.innerHTML=document.body.replace('u','n');}