我需要一种方法将HTML附加到容器元素而不使用innerHTML . 我不想使用innerHTML的原因是因为它使用时如下:
element.innerHTML += htmldata
它的工作原理是在添加旧的html和新的html之前先替换所有的html . 这不好,因为它重置了嵌入式Flash视频等动态媒体......
我能用这种方式做到这一点:
var e = document.createElement('span');
e.innerHTML = htmldata;
element.appendChild(e);
然而,这种方式的问题是文档中现在有额外的span标记,我不想要 .
那怎么办呢?谢谢!
5 回答
提供替代方法(因为使用
DocumentFragment
似乎不起作用):您可以通过迭代新生成的节点的子节点来模拟它,并仅附加它们 .我很惊讶没有一个答案提到
insertAdjacentHTML()
方法 . 看看here . 第一个参数是您希望附加字符串的位置("beforebegin","afterbegin","beforeend","afterend") . 在OP的情况下,你会使用"beforeend" . 第二个参数只是html字符串 .基本用法:
alnafie对这个问题有很好的答案 . 我想举一个他的代码示例供参考:
希望这对其他人有帮助 .
使用“=”符号为div分配数据,您可以附加数据,包括以前的html数据
这就是DocumentFragment的意思 .
document.createDocumentFragment,.childNodes