[英]Why does innerHTML not change src of an image?
我必须将一个src设置为图像对象。 然后我改变它。
但是如果我在元素中添加一些东西(元素的内容),比如
meaning.innerHTML += ")";
(其中含义是图像的父元素),那么如果更改对象的src则不会影响文档。
示例: http : //jsfiddle.net/WcnCB/3/
你能解释一下它为什么会发生,以及如何解决它?
meaning.innerHTML += ')';
比你想象的还要多。 目测它只是附加一个)
的性格,但在幕后发生的事情是:
meaning.innerHTML = meaning.innerHTML + ')';
因此,您首先将DOM转换为字符串表示(HTML),然后添加a )
字符,最后将其从HTML转换回DOM。 HTML表示的所有元素都会再次创建,并且meaning
将被这些新元素替换。 所以你的旧的被破坏了。
最简单的解决方案是使用createTextNode
: http : //jsfiddle.net/WcnCB/4/ 。
meaning.appendChild(document.createTextNode(")"));
通过编写innerHTML += ...
您将覆盖之前的HTML并销毁对它的每个引用 - 包括actual_button
变量。
为什么你innerHTML += ...
使用innerHTML += ...
? 你应该这样做:
meaning.appendChild(document.createTextNode("(Something"));
当你犯下最大的罪恶时,那就是.innerHTML +=
(特别是innerHTML
与+=
结合,两者都不是坏事),会发生什么:
因此, actual_button
, actual_button
引用了一个分离的dom元素。 不是通过解析html创建的另一个img元素。
如果您设置图像ID并在更改innerHTML后获取它,则可以正常工作:
var meaning = document.getElementById('meaning');
meaning.innerHTML += 'Something ...';
var actual_button = document.createElement('img');
actual_button.id = 'actual_button';
actual_button.src = 'http://www.pawelbrewczynski.tk/images/add.png';
actual_button.className = 'add_word';
meaning.appendChild(actual_button);
meaning.innerHTML += " ... and another.";
var actual_button= document.getElementById('actual_button');
actual_button.src = 'http://www.pawelbrewczynski.tk/images/loading.gif';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.