我需要一种不使用innerHTML将HTML附加到容器元素的方法。我不想使用innerHTML的原因是因为当它像这样使用时:
元素。html += htmldata
它的工作原理是先替换所有的html,然后再添加旧的html和新的html。这是不好的,因为它重置动态媒体,如嵌入式flash视频…
我可以这样做,这是可行的:
var e = document.createElement('span');
e.innerHTML = htmldata;
element.appendChild(e);
然而,这种方式的问题是,在文档中有一个额外的span标签,现在我不想要。
那么如何做到这一点呢?谢谢!
对于这个问题,Alnafie给出了一个很好的答案。我想给出一个他的代码示例供参考:
var childNumber = 3;
function addChild() {
var parent = document.getElementById('i-want-more-children');
var newChild = '<p>Child ' + childNumber + '</p>';
parent.insertAdjacentHTML('beforeend', newChild);
childNumber++;
}
body {
text-align: center;
}
button {
background: rgba(7, 99, 53, .1);
border: 3px solid rgba(7, 99, 53, 1);
border-radius: 5px;
color: rgba(7, 99, 53, 1);
cursor: pointer;
line-height: 40px;
font-size: 30px;
outline: none;
padding: 0 20px;
transition: all .3s;
}
button:hover {
background: rgba(7, 99, 53, 1);
color: rgba(255,255,255,1);
}
p {
font-size: 20px;
font-weight: bold;
}
<button type="button" onclick="addChild()">Append Child</button>
<div id="i-want-more-children">
<p>Child 1</p>
<p>Child 2</p>
</div>
希望这对其他人有所帮助。