如何附加一个 HTML 字符串,例如
var str = '<p>Just some <span>text</span> here</p>';
在<div>
与ID test
?
(顺便说一句div.innerHTML += str;
是不可接受的。)
如何附加一个 HTML 字符串,例如
var str = '<p>Just some <span>text</span> here</p>';
在<div>
与ID test
?
(顺便说一句div.innerHTML += str;
是不可接受的。)
使用insertAdjacentHTML
这在目前所有的浏览器都支持:
div.insertAdjacentHTML( 'beforeend', str );
position 参数beforeend
将添加到元素内部,在其最后一个子元素之后。
现场演示: http : //jsfiddle.net/euQ5n/
AppendChild
(E) 在 chrome 和 safari 上比其他解决方案快 2 倍以上,insertAdjacentHTML
(F) 在 Firefox 上最快。在innerHTML=
(B)(不要混淆+=
(A))是在所有的浏览器第二快速的解决方案,这是更方便的比E和F.
设置环境 (2019.07.10) MacOs High Sierra 10.13.4 on Chrome 75.0.3770 (64-bit), Safari 11.1.0 (13604.5.6), Firefox 67.0.0 (64-bit)
您可以在此处在您的机器上重播测试
这个想法是innerHTML
在中间元素上使用,然后将其所有子节点通过appendChild
.
var target = document.getElementById('test');
var str = '<p>Just some <span>text</span> here</p>';
var temp = document.createElement('div');
temp.innerHTML = str;
while (temp.firstChild) {
target.appendChild(temp.firstChild);
}
这避免了清除任何事件处理程序,div#test
但仍然允许您附加一个 HTML 字符串。
正确的方法是使用insertAdjacentHTML
. 在 Firefox 8 之前,Range.createContextualFragment
如果您的不str
包含script
标签,您可以回退使用。
如果您的str
containsscript
标签,则需要在插入片段之前script
从返回的片段中删除元素createContextualFragment
。否则,脚本将运行。(insertAdjacentHTML
标记脚本不可执行。)