我有一个从数组中填充的动态表。
构建表时,我在循环内部有以下内容:
var tdRecord = trRecord.insertCell(trRow.cells.length);
var tdRecordId = dataArray[j][0];
tdRecord.onclick = function() { alert(tdRecordId); }
问题是警报只会警告数组中的最后一组tdRecordId。如果我点击任何其他td行,他们都会提醒相同的号码。
任何人都知道如何解决这个问题?
答案 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 + ")";
将其设置为文字,而不是动态。 :)
在你正在做的事情中,它总是引用变量,而不是当前值。
因此,当变量发生变化时,函数警报会发生变化。
在这里,它实际上是插入值,而不是变量本身,所以它将保持不变而不是改变。