在不删除图像的情况下用Javascript替换单词
我想用“skägget”替换这个p标签中的“morrhåren”。我不应该在HTMLKOD中更改任何内容,只是在我的js文件中。如何使用Javascript更改这些单词,而不使图像消失?在不删除图像的情况下用Javascript替换单词,javascript,replace,Javascript,Replace,我想用“skägget”替换这个p标签中的“morrhåren”。我不应该在HTMLKOD中更改任何内容,只是在我的js文件中。如何使用Javascript更改这些单词,而不使图像消失? 卡滕·斯克马尔德·莫雷恩·巴克特(katten skrämd lägger den morrhåren bakåt),德特桑玛·戈尔登·维德·斯格姆德·弗雷特(detsamma gör den vid slagsmål för att skydda morrhåren)。奥姆·卡滕(Om kattenär
卡滕·斯克马尔德·莫雷恩·巴克特(katten skrämd lägger den morrhåren bakåt),德特桑玛·戈尔登·维德·斯格姆德·弗雷特(detsamma gör den vid slagsmål för att skydda morrhåren)。奥姆·卡滕(Om kattenär en nyfiken vinklar den Morhåren framåt.
你可以做一个简单的innerHTML
替换(p.innerHTML=p.innerHTML.replace(/morrhåren/g,“skägget”)
,其中p
是对元素的引用),这不会使图像消失(img元素只会被删除并替换为同一图像的新元素),但是我假设有一些原因你不应该这样做(例如:img
元素上的事件处理程序),因为你已经强调你需要让img
元素单独存在
如果是这种情况,则需要遍历p
的子节点,并仅对文本节点(nodeType
==3)进行操作,更新它们的nodeValue
(文本节点的文本)。如果目标词仅出现在顶层,则只需遍历p
的子节点;如果它出现在p
中的其他元素中,则需要一个递归函数
例如,假设p
是对该元素的引用:
for (var child = p.firstChild; child; child = child.nextSibling) {
if (child.nodeType === 3) {
child.nodeValue = child.nodeValue.replace(/morrhåren/g, "skägget");
}
}
同样,如果需要处理子体元素,则需要向其添加递归
例如:
setTimeout(函数(){
var p=文件查询选择器(“p”);
for(var child=p.firstChild;child;child=child.nextSibling){
if(child.nodeType==3){
child.nodeValue=child.nodeValue.replace(/morrhåren/g,“skägget”);
}
}
}, 800);代码>
卡滕·斯克马尔德·莫雷恩·巴克特(katten skrämd lägger den morrhåren bakåt),德特桑玛·戈尔登·维德·斯格姆德·弗雷特(detsamma gör den vid slagsmål för att skydda morrhåren)。从kattenär en nyfiken vinklar den morrhåren framåt.元素(document.getElementById(“/**输入元素的id*/”).innerHTML
)的innerHTML属性可以用于获取(通过将其分配给变量)或设置(通过将新的字符串值分配给属性)任何HTML元素的全部内容。您好,欢迎来到Stack Overflow!请拿着这本书,通读一遍,特别是做你的研究,看看相关的主题,然后试一试。如果你在做了更多的研究和搜索后陷入困境,无法摆脱困境,请发布一份你的尝试,并明确指出你陷入困境的地方。人们会很乐意帮忙的。非常感谢!但是,我觉得这对我来说有点复杂。。。(var child=p.firstChild;child;child=child.nextSibling)我在这里写什么?在我的身体里有按钮,H1,p,H2,H3,p,H2,p,H2,p(这一排的最后一个p,是什么孩子?)等等@LindaFredrikson:“我在这里写什么”是什么意思?我给你看了该写什么。重新找到正确的段落:这将取决于您的页面。将任何有效的CSS选择器与document.querySelector
(或者给它一个ID并使用document.getElementById
)一起使用。我放弃,这对我来说太复杂了。但是谢谢你的努力!对现在它工作了!我在代码中写了[3]:(var child=p[3].firstChild;child;child=child.nextSibling)。非常感谢!:)@LindaFredrikson:如果它是最后一个索引,而不是硬编码索引,我会使用length-1
:var list=document.getElementsByTagName(“p”);对于(var child=list[list.length-1].firstChild;…
我不应该在HTML kod中更改任何内容。我必须在Javascript中进行单词替换。p标记没有id。哦,这是真的。然后文档。querySelector()
或文档。queryselectoral()
是引用
元素的另一种方式。
for (var child = p.firstChild; child; child = child.nextSibling) {
if (child.nodeType === 3) {
child.nodeValue = child.nodeValue.replace(/morrhåren/g, "skägget");
}
}