-1

我正在制作一个 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,我有一个全局变量计数初始化为零,它的值是最后一行索引。

4

1 回答 1

0

这是一个范围界定问题。当click处理程序触发时,然后count设置为最后一个。尝试.addEventListener使用匿名函数包装您的方法:

(function(count){
    TR.addEventListener('click', function(e) {
        console.log(count,e);  //     ---------> 1 
    });
})(count);

这将起作用,因为与for循环不同,函数会创建单独的范围。

于 2013-01-02T09:32:40.950 回答