我遇到了一個問題 - 我想在創建動態生成的表格的每個單元格時添加一個.onClick事件。javascript - 給表單中的每個單元格添加.onClick
cell.onclick = function(){
mouseClick(row_number,i, cell);
};
但是,它似乎只是將事件添加到每行中的最後一個單元格。這怎麼可能?它以某種方式覆蓋了以前的?以及如何使其工作?
function drawRow(rowData, length, keys, row_number){
//rowData - object where the row data is stored, length-row length, keys - object with table keys stored, row_number - number of the row
var rowData=rowData;
var row = document.createElement("tr");
for(i=0; i<length; i++){
var cell = document.createElement("td");
console.log("Creating event for "+i+" .");
cell.onclick = function(){
mouseClick(row_number,i, cell);
};
var key = keys[i];
var cell_text = document.createTextNode(rowData[key]);
cell.appendChild(cell_text);
row.appendChild(cell);
}
return row;
}
歡迎可怕的不方便世界封閉的;) –
'我有一個全局範圍(據我所知 - 順便說一句,這是不好的做法),'row_number'和'cell'的作用域是外部函數,所以它們對所有單元格都是一樣的。你可以[修復它與閉包](http://stackoverflow.com/q/750486/4642212),但我強烈建議**事件代表團**而不是。 – Xufox
這個問題是這個問題的重複http://stackoverflow.com/questions/1451009/javascript-infamous-loop-issue 查看答案有一個可能的解決方案和javascripts臭名昭着的loop-closure問題的解釋。 – juan8a