如何在addEventListener中传递触发元素?

时间:2016-12-21 19:31:13

标签: javascript addeventlistener

我有这段代码:

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

1 个答案:

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