1

ドキュメント フラグメントにコンテンツを作成する関数に div を送信すると、フラグメントを div に追加すると、このエラーが発生します。

Object column_left has no method 'appendChild' ' 

これは私のコードです:

function progress_bar(parent_div){      
    var frag = document.createDocumentFragment();
    var d = document.createElement('div');
        d.className = 'progress_bg';
        d.style.width = '90%';
    frag.appendChild(d);
    parent_div.appendChild(frag);
}

関数は次のように呼び出されます。

var d = document.getElementById('column_left');
progress_bar(d);    

このように追加できない理由を知っている人はいますか?

4

1 に答える 1

2

を呼び出す前はprogress_bar(d)#column_left(まだ) 存在しないためd未定義です。値を progress_barに渡しているため、undefinedappendChild を呼び出すことはできません。

これを修正するには、#column_left最初に作成するか、 のような既存の要素を選択する必要がありdocument.bodyます。

これは、コードがクリーンアップされたJSFiddleです。代わりにドキュメントの本文に追加し、実際にレンダリングされる内部コンテンツも設定するように作成しました。

でやりたい場合は#column_left、次のようになります。

var el = document.createElement('div');
el.id = 'column_left';
document.body.appendChild(el);
progress_bar(el);    
于 2013-07-12T06:04:49.453 に答える