2017-12-11 21 views
0

私はdivの中に4 canvasの要素を作成しようとしていますforのループ内にはforEachを使用しています。ここJS:forEach内のforループ

は、サンプルコードである:

const wavePart = document.querySelectorAll('.waves'); 
wavePart.forEach(element => { 
    for (i; i < 4; i += 1) { 
    let can = document.createElement('canvas'); 
    element.appendChild(can); 
    } 
}); 

このコードは、最初wavePart内部4つのキャンバスを作成するだけ、それはすべてのコンテナをループしません。私は何か間違っているのですか?

+1

あなたは0 iに初期化するために忘れてしまいました。 'for(i = 0; i <4; i + = 1){' –

+0

私は実際に 'i'の初期値を設定しましたが、forEachループの外側です。あなたの助けをありがとう:) –

答えて

2

はい、あなたがしている:

  1. iが何らかの含むコードによって定義されているに依存し、

  2. はあなたのループで

iの初期値を設定しませんしたがって、最初のforEachコールバックの後にi4に残っています。ループバックボディは実行されません。i < 4はその時点で常にfalseです。

代わりに、コールバック内でローカルiを宣言し、で開始する0に設定します。

const wavePart = document.querySelectorAll('.waves'); 
wavePart.forEach(element => { 
    for (let i = 0; i < 4; i += 1) { 
    // ^^^^^^^^^ 
    let can = document.createElement('canvas'); 
    element.appendChild(can); 
    } 
}); 
+0

*(上記の部分に '0'が表示されない場合は、リフレッシュしてください。愚かなタイプミス)* –

+1

もちろん! 実際には 'forEach'ループの外側では' i'の初期値を設定しました。 お世話になりましたT.J.クラウダー:) –