2013-07-12 170 views
1

當我發送一個div給一個創建內容到一個文檔片段的函數時,它給我提供了這個錯誤,當我將該片段附加到div。對象沒有方法'appendChild'

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);  

任何一個人知道爲什麼我不能追加這個樣子?

+0

您可以提供HTML標記呢? – Zhanger

+0

@Zhanger是否指CSS類'progress_bg'的內容? – Sir

+0

對不起,我沒有意識到你沒有任何東西可以生成DOM – Zhanger

回答

2

在您致電progress_bar(d)之前,#column_left不存在(尚未),所以d未定義。由於您將undefined值傳入progress_bar,因此無法在其上調用appendChild。

爲了解決這個問題,你必須首先創建#column_left,或者選擇一個預先存在的元素,如document.body

Here是一個清理代碼的JSFiddle,我將其添加到文檔的主體中,並設置內部內容的東西實際呈現。

如果你想做到這一點就#column_left,這將是這樣的:

var el = document.createElement('div'); 
el.id = 'column_left'; 
document.body.appendChild(el); 
progress_bar(el);