2013-01-02 60 views
-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,我有一個全局變量計數初始化爲零,並且它的值是最後一排索引。

回答

0

這是一個範圍界定問題。當click處理程序觸發時,count被設置爲最後一個。試着用匿名函數包木窗您.addEventListener方法:

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

這將工作,因爲功能不同for循環創建單獨的範圍。

+0

其工作......你能解釋它更多的任何鏈接.....因爲我是一個新手.... – shark

+0

@shark看看這個:http://www.mennovanslooten。 nl/blog/post/62(與你的情況幾乎一樣)。也嘗試用「javascript」搜索「封閉」和「範圍」。 – freakish

+0

還有一件事,我無法通過任何其他變量,然後計數....我怎麼能這樣做這個 – shark