我的小代码
https://codepen.io/kymed/pen/wxawJX
我要做什么
我正在学习JavaScript,初学者是Web开发人员。我正在通过构建一个简单的井字游戏应用程序进行练习。井字游戏表中的每个单元格都有一个从0到8的ID,当我尝试将该ID附加到tileSelected()函数(用于单击图块时)时,每个单元格的所有onclick事件都保存最后一个的ID细胞。 (JS代码7至9)
for(i = 0; i < 9; i++) {
document.getElementById(i.toString()).onclick = function() { tileSelected(i.toString()); }
}
我尝试过的事情
我多次修改该代码,以将ID传递给onclick事件的函数,尽管每次都存在相同的问题
那么这里的错误是什么?我在做什么错了?
答案 0 :(得分:2)
在声明for
循环后,i
是一个全局变量。这些循环结束后,i
的值为9。调用回调函数时,该值为9。如果您使用for (let i = 0; i < 9; i++)
将变量的作用域限定在循环中,则会发现有所改善。
答案 1 :(得分:0)
您的csv
值为9,因此您使用tileSelected函数调用i
的值始终为9。
您可以使用i.toString()
并传递ID。 this
关键字的计算结果为当前执行上下文的This Binding的值
this
tileSelected(this.id);