javascript - 基本的onclick事件问题

时间:2011-02-27 20:22:43

标签: javascript

我有一个从数组中填充的动态表。

构建表时,我在循环内部有以下内容:

var tdRecord = trRecord.insertCell(trRow.cells.length);
var tdRecordId = dataArray[j][0];
tdRecord.onclick = function() { alert(tdRecordId); }

问题是警报只会警告数组中的最后一组tdRecordId。如果我点击任何其他td行,他们都会提醒相同的号码。

任何人都知道如何解决这个问题?

4 个答案:

答案 0 :(得分:1)

这应该有效:

(function( id ) {

    tdRecord.onclick = function() {
        alert( id );
    };

}( tdRecordID ));

您似乎在循环中运行代码。在这种情况下,所有点击处理程序都将指向相同的tdRecordId值。如果要捕获当前迭代的值,则必须使用函数包装器,它将为您完成。

答案 1 :(得分:0)

tdRecord.onclick = function () { alert('123'); };

答案 2 :(得分:0)

您可以使用jQuery的数据功能:http://jsfiddle.net/zRXS6/

$(function(){
    var number = 1;
    var div1 = $('<div>a</div>');
    div1.data('number', number);
    div1.click(function() {window.alert($(this).data('number'))});
    number = 2;
    var div2 = $('<div>b</div>');
    div2.data('number', number);
    div2.click(function() {window.alert($(this).data('number'))});
    $('body').append(div1).append(div2);
});

答案 3 :(得分:-1)

tdRecord.onclick = "alert(" + tdRecordId + ")";

将其设置为文字,而不是动态。 :)

在你正在做的事情中,它总是引用变量,而不是当前值。

因此,当变量发生变化时,函数警报会发生变化。

在这里,它实际上是插入值,而不是变量本身,所以它将保持不变而不是改变。