2013-04-22 143 views
0

我试图通过使用for循环在飞行中创建多个div。此代码不会给出任何结果。我的期望是它创建与id a1,a2,a3等单独的div。任何人都可以解释为什么它不?我知道还有其他的解决方案,但这对我来说是一种学习体验,我想知道为什么我的解决方案无法正常工作。For循环未创建Div

function createDiv(divid,divcontent){ 
    this.div = document.createElement("div"); 
    this.div.setAttribute("id",divid); 
    this.div.innerHTML = divcontent; 
} 

var keys = [1,2,3,4,5,6,7,8,9,0]; 
for (i=0; i<keys.length;i++){ 
    createDiv("a"+i,i); 
} 
+1

我不知道你想你的前缀函数'this'瓦尔。在函数上下文中,''this'在'window'对象中 – Phil 2013-04-22 01:10:47

+0

为了确保我理解,你建议在函数上下文中使用var,并在类/对象上下文中使用var,对吗? – stephenthedev 2013-04-22 01:13:43

回答

4

您必须将该节点追加到文档中的父节点,以使其显示。像这样:

function createDiv(divid,divcontent){ 
    this.div = document.createElement("div"); 
    this.div.setAttribute("id",divid); 
    this.div.innerHTML = divcontent; 

    var parent = document.getElementById('mydiv'); 
    parent.appendChild(this.div); 
} 
+0

我明白了!现在它运行良好。谢谢! – stephenthedev 2013-04-22 01:14:09

+0

欢迎您! – hek2mgl 2013-04-22 01:17:34

0

您需要将div附加到现有的html元素。

document.getElementById("yourHtmlElementId").appendChild(this.div); 
0

你的函数只创建div你必须将它添加到DOM

function createDiv(divid,divcontent){ 
    this.div = document.createElement("div"); 
    this.div.setAttribute("id",divid); 
    this.div.innerHTML = divcontent; 
} 

var keys = [1,2,3,4,5,6,7,8,9,0]; 
for (i=0; i<keys.length;i++){ 
    var newDiv = createDiv("a"+i,i); //Store the div you just created here 
    document.getElementById('yourdivcontainer').appendChild(newDiv); //And add it to the DOM 
} 
-1
function createDiv(id, content){ 
    var div = document.createElement('div'); 
    div.setAttribute("id",id); 
    div.innerHTML = content; 
    return div; 
} 
var $parent = $('#parentDiv'); // get parent div 
$parent.append(createDiv("a"+i,i)); 
+0

对代码的解释在哪里? – Jesse 2013-04-22 01:54:04

+0

$是函数,返回你需要的元素,所以我们应该将元素存储到一个临时对象。 – Teddy 2013-05-23 07:58:18