function create(htmlStr) {
    var frag = document.createDocumentFragment(),
        temp = document.createElement('div');
    temp.innerHTML = htmlStr;
    while (temp.firstChild) {
        frag.appendChild(temp.firstChild);
    }
    return frag;
}

function add(identifier, html){
    var frag = create(html);
    document.body.insertBefore(frag, document.getElementById(identifier));
}


identifier是我已经在开发人员工具中验证过的标签的字符串ID,html只是我想添加到由所述identifier表示的元素的片段。 frag是bonefide html片段,对getElementById的调用返回bonefide元素,即都不是字符串。为什么在insertBefore上出现上述错误?

最佳答案

您的元素可能不是document.body的直接子代。试试这个->

function add(identifier, html){
    var frag = create(html),
        el = document.getElementById(identifier);
    el.parentNode.insertBefore(frag, el);
}

10-06 16:00