1
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ますidentifierfragは真骨頂の html フラグメントであり、への呼び出しgetElementByIdは真骨頂の要素を返します。つまり、どちらも文字列ではありません。で上記のエラーが発生するのはなぜinsertBeforeですか?

4

1 に答える 1

3

要素が の直接の子ではない可能性がありますdocument.body。これを試してください - >

function add(identifier, html){
    var frag = create(html),
        el = document.getElementById(identifier);
    el.parentNode.insertBefore(frag, el);
}
于 2013-04-09T23:27:58.520 に答える