简体   繁体   English

JS:forEach内部的for循环

[英]JS : for loop inside forEach

I'm trying to create 4 canvas elements inside several div 's using for loop inside forEach . 我试图在forEach内的for循环的几个div创建4个canvas元素。

Here is a sample code: 这是一个示例代码:

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

This code only create the 4 canvas inside the first wavePart only, it doesn't loop through all containers. 该代码仅在第一个 wavePart内创建4画布,它不会遍历所有容器。 Am I doing something wrong? 难道我做错了什么?

Yes, you're: 是的,您是:

  1. Relying on i being defined by some containing code, and 依靠i由一些包含代码的定义,并且

  2. Not setting an initial value for i in your loop 没有在循环中为i设置初始值

Consequently, i is left at 4 after the first forEach callback, and so on any subsequent callbacks, the for loop body never runs because i < 4 is always false at that point. 因此,在第一个forEach回调之后, i留在4 ,因此在任何后续回调中, for循环主体永远不会运行,因为i < 4始终为false。

Instead, declare i locally within your callback, and set it to 0 to start with: 而是在您的回调中本地声明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);
   }
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM