2014-04-08 103 views
0

如何将onclick事件添加到循环中的元素?我尝试过这样。Javascript在循环中添加onclick事件

  var c = "#FFFFFF" 
      for(var i=0; i<_data.length; i++){ 
       c = c == "#FFFFFF" ? "#D8D8D8" : "#FFFFFF"; 

       var row = table.insertRow(rowCount++); 
       row.style.backgroundColor = c; 
       row.onclick = function(){ 
        clickEvent(_data[i][0]); 
       } 

       newColl(row,i,0,_data[i][1]); //Name 
       newColl(row,i,1,_data[i][2]); //Surname 
       newColl(row,i,2,_data[i][3]); //Time working 

       newColl(row,i,3,""); //TO-DO: Started at 
       newColl(row,i,4,""); //TO-DO: Walked home 
       newColl(row,i,5,""); //TO-DO: Took lunch 
      } 

我知道不行,我知道为什么。但我不知道如何解决它。

+0

http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example – Tmdean

回答

1

不要这样做!!!!!。这就是为什么事件代表团存在的确切原因。只需附加单击事件到您正在循环的元素的父级,他们应该在点击时自动发送点击事件。

click here for an explanation

+0

我不知道,将工作,因为我不能够将从行中获取ID。 – Yemto

+1

事件对象具有派发单击事件对象的所有属性..包括ID ...只是做*** e.target.id *** – shanks

+0

我不能得到那个工作:/我试过与setAttribute和ID。但我所得到的是null,并且使用类名的方法,我得到一个空字符串。 – Yemto