2013-07-12 213 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);