替换部分innerHTML而无需重新加载嵌入的视频

时间:2011-09-24 23:46:51

标签: javascript innerhtml

我有一个id为#test的div,其中包含许多html,包括一些youtube-embeds等。

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

我需要用“(works!)”替换该文本。

这样做的正常方法当然是:

document.getElementById("test").innerHTML = document.getElementById("test").replace("[test]","(works!)");

但问题是,如果我这样做,youtube-embeds会重新加载,这是不可接受的。

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

更改您的网页

[test]

变为

<span id="replace-me">[test]</span>

现在使用以下js来查找和更改

document.getElementById('replace-me').text = '(works!)';

如果您需要更改多个地点,请使用class代替id并使用document.getElementsByClassName并迭代返回的元素并逐个更改。< / p>

或者,你可以使用jQuery,甚至更简单:

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

现在使用jQuery进行单一替换可能有点过分,但是如果你需要更改多个地方(通过类名),jQuery肯定会派上用场:)