考虑以下DOM片段:
<div id="div-1">foo</div> <div id="div-2">bar</div>
可以在div之间插入HTML字符串(编辑:包含要渲染的标签),而不会将其包装在通过document.createElement创建的另一个div(编辑或其他标签)中,并设置其innerHTML属性?
解决方法
大多数浏览器支持
element#insertAdjacentHTML()
,最终成为标准
in the HTML5 specification.不幸的是,Firefox 7和更低版本不支持,但我设法找到
a workaround that uses ranges插入HTML.我已经调整下面的工作为您的方案:
var el = document.getElementById("div-2"),html = "<span>Some HTML <b>here</b></span>"; // Internet Explorer,Opera,Chrome,Firefox 8+ and Safari if (el.insertAdjacentHTML) el.insertAdjacentHTML ("beforebegin",html); else { var range = document.createRange(); var frag = range.createContextualFragment(html); el.parentNode.insertBefore(frag,el); }