无法在for循环中增加变量计数器

时间:2019-07-25 18:10:45

标签: javascript html html5-canvas

我正在使用HTML Canvas,并使用JavaScript中的For循环在其上生成了网格。在每行上方的顶部网格上,我想显示数字以对它们进行计数,但是使用在循环中创建的计数器变量,整个过程中,它仅显示我对其初始化的内容,并且每次循环都不递增运行。

for (let topNum = 44; topNum < 1990; topNum = topNum + 50) {
  let x = 45;
  let i = 0;

  c.fillStyle = "rgb(0, 0, 0)";
  c.font = "30px serif";
  c.fillText(i, topNum, x);
  i = i + 1;
}

https://jsfiddle.net/Citizen4/4fd0wmb6/3/

3 个答案:

答案 0 :(得分:2)

我不确定我是否理解,但是问题是您应该将let i = 0移到以下位置:

let i = 0;
for (let numTop = 44; numTop < 1990; numTop = numTop + 50) {
  let x = 45;//Each time it starts again     

  c.fillStyle = "rgb(0, 0, 0)";
  c.font = "30px serif";
  c.fillText(i, numTop, x);
  i = i + 1;
}

答案 1 :(得分:2)

将x = 45和i = 0移到for循环之外,这样就不会在每次函数循环时重置它们。

i=0;
x=45;
for loop goes here.

https://jsfiddle.net/zvwL890h/

答案 2 :(得分:0)

记住作用域,并创建letconst并在定义的行上分配值。

还请记住,您可以将v = v + 1更改为v++,并将v = v + 50更改为v+=50

for (let numTop = 44, i = 0, x = 45; numTop < 1990; numTop += 50, i++) {
  c.fillStyle = "rgb(0, 0, 0)";
  c.font = "30px serif";
  c.fillText(i, numTop, x);
}

上面的代码显示,您可以在for循环中定义多个变量,并且可以在for循环声明中更改值。

在这种情况下,我们在numTop循环中定义xifor,并调整numTop和{{1}的值}在i循环中。