Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不删除图像的情况下用Javascript替换单词_Javascript_Replace - Fatal编程技术网

在不删除图像的情况下用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

我想用“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 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");
    }
}