For循环跳过迭代

时间:2021-01-24 19:33:42

标签: javascript html for-loop

我有一个 for 循环,它将遍历所有选择并为它们设置一个值。 出于某种原因,当我运行代码时,它会执行第一次迭代,然后跳到最后一次并执行 3 次,根据控制台,大约如此。

代码:

for (i = 0; i < 4; i += 1) {
    console.log(i)
    var generated = word
    
    while (generated == word) {
        generated = wordsJson.characters[Math.floor(Math.random() * wordsJson.characters.length)]
    }

    choices[i].innerHTML = translate(generated)
}

我在控制台中得到了什么:

    0
(3) 3

这是我第一次在 stackoverflow 上提问。如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:0)

似乎变量 ifor 循环之外被修改。

通常,您需要声明迭代器变量(在本例中为 i),以便将其范围限定为循环,如下所示:

for (let i = 0; i < 4; i += 1) { ... }

特别注意添加了 let。由于您还没有这样做,这意味着 i 已经在某处显式声明,或者如果没有,则您已经创建了一个新的全局变量 i

由于您有未显示的代码,这些代码似乎也与 i (choices[i]) 和我们不知道 (translate() ) 很难确定,但那将是第一个看的地方。

如果没有,发布一些额外的代码以便我们看到其他功能会有所帮助。