表格单元格未将其ID传递到函数的参数中

时间:2018-07-12 04:19:13

标签: javascript html web-applications event-handling event-listener

我的小代码

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事件的函数,尽管每次都存在相同的问题

那么这里的错误是什么?我在做什么错了?

2 个答案:

答案 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);