• 締切済み

JavaScript多重ループを使ったHTML生成

JavaScriptで以下のようなHTMLを生成したいと考えています。 <li>を任意の数で繰り返し処理して生成し、 さらにそれを任意の数で繰り返し処理して生成した<ul>に 紐づけるようにしたいと考えています。 <div id="index"> <ul>   <li><div></div></li>   <li><div></div></li>   <li><div></div></li>   ↓   <li>任意の数で繰り返し </ul> <ul>   <li><div></div></li>   <li><div></div></li>   <li><div></div></li>   ↓   <li>任意の数で繰り返し </ul> ↓ <ul>任意の数で繰り返し </div> 以下のようなスクリプトをjQueryを使って書いてみましたが、うまくできませんでした。 アドバイスいただけると大変助かります。 よろしくお願いいたします。 (function(x, y) {   var i = 0, j = 0, x = x, y = y;   var index = $("#index");     while(j < y) {       var ul = $("<ul>");       ul.appendTo(index);       while(i < x) {         var li = $("<li>");         var div = $("<div>");         div.appendTo(li);         li.appendTo(ul);         i++;       }     j++;     } })(5, 5);

みんなの回答

  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.2

iを初期化する箇所が間違っています。 jのループごとにiのループを回さなければならないのだから jのループの中にiの初期化が無ければ、iが一度5までいったら 二度とiのループの中に入ることはありません。 普通ならこのような場合for文を使いますよ。 for文を使えばこんなバグは作りにくいと思います。 余談ですが「x = x, y = y;」は意味がわかりません。全く不要です。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

こんにちは。 どうもインデックスの制御がうまくいっていないように思えます。 while文の前で、alertなどで各インデックスや制御用の変数値を確認してみるのがよろしいでしょう。 (5,5)だと多いので、(3,3)ぐらいのほうが良いかもしれません。

関連するQ&A