Javascript 表格单元格未将其ID传递到my函数';s参数
我的小代码 我想做的事 我现在正在学习javascript,初学者web开发人员。我正在通过构建一个简单的tic-tac-toe应用程序进行练习。tic tac toe表中的每个单元格都有一个从0到8的id,当我尝试将该id附加到tileSelected()函数时(例如,当单击tile时),每个单元格的所有onclick事件都会保留最后一个单元格的id。(JS代码7至9) (i=0;i<9;i++)的Javascript 表格单元格未将其ID传递到my函数';s参数,javascript,html,web-applications,event-handling,event-listener,Javascript,Html,Web Applications,Event Handling,Event Listener,我的小代码 我想做的事 我现在正在学习javascript,初学者web开发人员。我正在通过构建一个简单的tic-tac-toe应用程序进行练习。tic tac toe表中的每个单元格都有一个从0到8的id,当我尝试将该id附加到tileSelected()函数时(例如,当单击tile时),每个单元格的所有onclick事件都会保留最后一个单元格的id。(JS代码7至9) (i=0;i
{
document.getElementById(i.toString()).onclick=function(){tileSelected(i.toString());}
}
我尝试过的
我之前多次修改代码,将ID传递到onclick事件的函数中,尽管每次都有相同的问题
那么这里的bug是什么?我做错了什么?正如您为循环声明的
,I
是一个全局变量。当这些循环完成时,i
的值为9。调用回调函数时看到的值是9。如果您使用for(让i=0;i<9;i++)
将变量范围限定到循环,您将看到一个改进。正如您为循环声明的,i
是一个全局变量。当这些循环完成时,i
的值为9。调用回调函数时看到的值是9。如果您通过使用(让i=0;i<9;i++)的将变量范围限定到循环中,您将看到一个改进。您的i
值是9,因此您将选择函数调用i.toString()
,因此它始终是9
您可以使用this
并传递id。this
关键字计算为当前执行上下文的此绑定的值
tileSelected(this.id)代码>
(i=0;i<9;i++)的{
document.getElementById(i.toString()).onclick=function(){tileSelected(this.id);}
}
您的i
值是9,因此您将选定的函数调用i.toString()
与一起平铺,因此它始终是9
您可以使用this
并传递id。this
关键字计算为当前执行上下文的此绑定的值
tileSelected(this.id)代码>
(i=0;i<9;i++)的{
document.getElementById(i.toString()).onclick=function(){tileSelected(this.id);}
}
for(i = 0; i < 9; i++) {
document.getElementById(i.toString()).onclick = function() { tileSelected(i.toString()); }
}