我有这段代码:
window.onload = function(){
var player=0;
for(var i="0";i<"9";i++)
document.getElementById(i).addEventListener("click",function(){oxfunc(document.getElementById(i))});
function oxfunc(s){
s.innerHTML="!";
}
元素的ID编号为0到8.我想知道单击了哪个元素。上面的代码给出了一个错误:
tictactoe.js:8 Uncaught TypeError: Cannot set property 'innerHTML' of null
at oxfunc (tictactoe.js:8)
at HTMLTableCellElement.<anonymous> (tictactoe.js:5)
oxfunc @ tictactoe.js:8
(anonymous) @ tictactoe.js:5
答案 0 :(得分:1)
触发元素在函数中为this
,因此您无需使用您的方法。
addEventListener("load", function() {
var player = 0;
for (var i = 0; i < 9; i++) {
document.getElementById(i).addEventListener("click", function() {
oxfunc(this);
});
}
function oxfunc(s) {
s.innerHTML = "!";
}
});
如果您想使用您的方法,请参阅JavaScript closure inside loops – simple practical example。