我正在创建一个Web应用程序,我在其中动态创建行并向每个动态添加的行添加单击侦听器。但我无法弄清楚如何获取行索引并将一些变量传递给侦听器。
for(var i=0; i<len; i++) {
var TABLE = document.getElementById('tableId');
var BODY = TABLE.getElementsByTagName('tbody')[0];
//making a row
var TR = document.createElement('tr');
TR.className = "section group";
//creating first column
var TD = document.createElement('td');
TD.className = "col span_1_of_3";
//adding click listener
url_array[count] = result.details[count].video_url;
TR.addEventListener('click', function(e) {
console.log(count,e); // ---------> 1
});
count++;
}
在指示---> 1
的行中,我将全局变量计数初始化为零,其值为最后一行索引。
答案 0 :(得分:0)
这是一个范围问题。当click
处理程序触发时,count
将设置为最后一个。尝试使用匿名函数包装.addEventListener
方法:
(function(count){
TR.addEventListener('click', function(e) {
console.log(count,e); // ---------> 1
});
})(count);
这将起作用,因为函数创建了与for
循环不同的单独范围。