Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.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 在不重新加载嵌入视频的情况下替换部分innerHTML_Javascript_Innerhtml - Fatal编程技术网

Javascript 在不重新加载嵌入视频的情况下替换部分innerHTML

Javascript 在不重新加载嵌入视频的情况下替换部分innerHTML,javascript,innerhtml,Javascript,Innerhtml,我有一个id为#test的div,它包含很多html,包括一些youtube嵌入等 在这个div的某个地方有这样一个文本:“[test]” 我需要将该文本替换为“(works!)” 通常的做法当然是: document.getElementById("test").innerHTML = document.getElementById("test").replace("[test]","(works!)"); 但问题是,如果我这样做,youtube嵌入将重新加载,这是不可接受的 有办法做到这一

我有一个id为#test的div,它包含很多html,包括一些youtube嵌入等

在这个div的某个地方有这样一个文本:“[test]”

我需要将该文本替换为“(works!)”

通常的做法当然是:

document.getElementById("test").innerHTML = document.getElementById("test").replace("[test]","(works!)");
但问题是,如果我这样做,youtube嵌入将重新加载,这是不可接受的


有办法做到这一点吗?

您必须针对特定的元素,而不是父块。由于DOM正在更改,视频将被重新绘制到DOM。

也许
TextNode(textContent)
会帮助您,文档IE9,其他浏览器也应该支持它

更改页面以便

[test]
变成

<span id="replace-me">[test]</span>
如果需要更改多个位置,则使用
class
而不是
id
,并使用
document.getElementsByClassName
迭代返回的元素并逐个更改它们

或者,您可以使用jQuery,这样做更简单:

$('#replace-me').text('(works!)');
现在,使用jQuery进行单一替换可能有些过分,但如果需要更改多个位置(按类名),jQuery肯定会派上用场:)

$('#replace-me').text('(works!)');