Javascript将值赋给变量

时间:2013-09-02 11:13:16

标签: javascript variables

当我点击它时,我试图在表格中创建一个单元格。

for(var j = 0; j < 8; j++){
    var cell = row.insertCell(j);
    cell.name = j;
    cell.onclick=function(){alert(cell.name)};
}

但是,这会打印每个单元格的数字8。如何在j中保存cell.name的值,而不是仅仅指向变量j

感谢。

1 个答案:

答案 0 :(得分:5)

重要提示:所有JavaScript开发人员都应该知道这一点。它会导致很难找到各种奇怪的错误。

对JavaScript不熟悉的人来说,这是一个常见的错误。我之前犯了同样的错误。

不为每次迭代创建循环内的函数。它是具有相同闭包范围的相同的一个函数对象。因此,您的单元格将具有完全相同的onclick回调。

我的建议是永远不要在循环内创建一个函数。相反,创建并调用一个返回回调函数并将其分配给onclick的函数。

for (var j = 0; j < 8; j++) {
    var cell = row.insertCell(j);
    cell.name = j;
    cell.onclick = createOnClick(cell);
}

function createOnClick(cell) {
    return function () {
        // do whatever you want to do with cell
    };
}
相关问题