簡體   English   中英

javascript-基本的onclick事件問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM