[英]javascript - basic onclick event question
我有一個從數組填充的動態表。
構建表時,我在循環中包含以下內容:
var tdRecord = trRecord.insertCell(trRow.cells.length);
var tdRecordId = dataArray[j][0];
tdRecord.onclick = function() { alert(tdRecordId); }
問題是警報將僅警報陣列中最后設置的tdRecordId。 如果我單擊其他任何td行,它們都會提示相同的數字。
有人知道我該如何解決嗎?
這應該工作:
(function( id ) {
tdRecord.onclick = function() {
alert( id );
};
}( tdRecordID ));
您似乎正在循環內運行代碼。 在這種情況下,所有點擊處理程序都將指向相同的tdRecordId
值。 如果要捕獲當前迭代的值,則必須使用函數包裝器為您完成此操作。
tdRecord.onclick = function () { alert('123'); };
您可以使用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);
});
tdRecord.onclick = "alert(" + tdRecordId + ")";
將其設置為文字,而不是動態。 :)
在執行操作時,它將始終引用變量,而不是當前值。
因此,隨着變量的更改,功能警報的內容也將更改。
在此,它實際上是插入值,而不是變量本身,因此它將保持不變而不是更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.