2017-12-11 3 views
0

div의 내부에 루프를 사용하여 4 canvas 개의 요소를 만들려고합니다.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

실제로 forEach 루프 바깥에'i'의 초기 값을 설정했습니다. 도움을 주셔서 감사합니다 :) –

답변

2

예, 위치 : i

  1. 는 의지

    가 일부 포함 된 코드에 의해 정의되는, 그리고

  2. 는 루프에 i의 초기 값을 설정하지

결과적으로 은 첫 번째 forEach 콜백 이후에 4에 남고, 이후의 모든 c allbacks이면 i < 4은 항상 그 지점에서 거짓이므로 for 루프 본문이 실행되지 않습니다. 당신은 내가 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'이 없으면 새로 고침을 누르십시오. 바보 typo.) * –

+1

물론! 실제로 'i'에 대한 초기 값을 설정했지만 forEach 루프 바깥에 설정했습니다. 도움을 주셔서 감사합니다. T.J. Crowder :) –