2015-02-08 37 views
1

HTML:試圖爲另一個div內添加div元素的jquery'for'循環。

<!DOCTYPE html> 
    <html> 
    <head> 
     <link rel='stylesheet' type='text/css' href='etch_a_sketch.css'/> 
     <script type='text/javascript' src='etch_a_sketch.js'></script> 
    </head> 
    <body> 
     <div class="outer"> 
     </div> 
    </body> 
</html> 

JS:

$(document).ready(function() { 
    $(function() { 
     for(i=0; i<16; i++) { 
      $('<div class="inner"></div>').appendTo('.outer'); 
    } 
)}; 

好傢伙!我試過在這裏和其他地方尋找答案,但沒有運氣。我試圖做一個jquery'for'循環,它將動態地在外部div容器中創建16個div元素。代碼看起來對我來說很合理,但它不起作用。我沒有發佈CSS,因爲它不相關。任何幫助將非常感激!

+0

您的括號和大括號似乎不平衡,請檢查它們。 – Jost 2015-02-08 15:48:24

回答

2

第一。你有語法錯誤。最後一行)};應該是});

下一步。不需要兩次創建一個jQuery對象(還有一個語法 - }應該是}))。

這條線:

$(document).ready(function() { 

做同樣的事情,因爲這行:

$(function() { 

Reference


所以,綜上所述,您應該結束了與此:

$(document).ready(function() { 
    for(i=0; i<16; i++) { 
     $('<div class="inner">blah</div>').appendTo('.outer'); 
    } 
}); 

或本:

$(function() { 
    for(i=0; i<16; i++) { 
     $('<div class="inner">blah</div>').appendTo('.outer'); 
    } 
}); 

JSFiddle

0

您似乎在使用jQuery,但尚未鏈接到庫。根據您想要的版本添加以下兩行中的一行(或下載文件並鏈接到該行)。

1.x snippet: <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> 
2.x snippet: <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 

還有一些括號沒有被關閉的問題。下面的代碼片段顯示了它在ready處理程序中沒有額外的匿名函數的情況下工作。

$(document).ready(function() { 
 
    for (i = 0; i < 16; i++) { 
 
    $('<div class="inner">' + i + '</div>').appendTo('.outer'); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="outer"> 
 
</div>

0

試試這個,

$(function() { 
     var innerHTML=[]; 
     for(i=0; i<16; i++) { 
      innerHTML.push('<div class="inner"></div>'); 
     } 
     $('.outer').html(innerHTML.join('')); 
}); 

請jQuery庫添加到您的網頁。

0
$(document).ready (function(){ 
    for (var i=0; i<=16; i++){ 
     $ ('.outer').html($('.outer').html()+"<div class='inner'></div>"; 
    } 
}); 

以上內容非常簡單。先嚐試一下。我的理論是appendTo不工作,因爲元素不存在?但它應該工作嗎?另外,你不需要另一個匿名函數。

0

我想提出一個更好的性能,這將加快的情況下,有很多元素

$(document).ready(function() { 
    var innerDivs = ""; 
    for(i=0; i<16; i++) { 
     innerDivs +='<div class="inner">blah</div>'; 

    } 
    $('.outer').append(innerDivs); 
}); 

這將有更好的表現,因爲我們不會有訪問DOM樹的過程不止一個時間