2011-02-27 26 views
2

私は、動的テーブルを配列から作成しました。javascript - 基本的なonclickイベントの質問

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

問題は配列の最後のセットtdRecordIdを警告するよう警告です:

私はループの次の内側を持っているテーブルを構築

。他のtd行のいずれかをクリックすると、すべて同じ番号が通知されます。

これをどのように修正できますか?

+0

拡大してください、あなたのやろうとしていることは不明です。 – RobertPitt

+0

文字列はどこから来ていますか?どのようにそれはテーブルのセルに関連していますか? –

+0

さらに詳しい情報を追加 – Joe

答えて

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

私は彼がその議論を渡したかったと思う。ファンクションブロックでは指定しないでください。 –

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); 
}); 
+2

この関数をすぐに呼び出す必要はありません。 –

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

動的いうし、リテラルとして設定します。 :)

何をしているのかは、常に現在の値ではなく変数を参照します。

変数が変更されると、どのような機能の警告が変化しますか?

これは実際に変数自体ではなく値を挿入するため、変更する代わりに同じままになります。

1

これは動作するはずです:

(function(id) { 

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

}(tdRecordID)); 

あなたがループ内のコードを実行されているように見えます。その場合、すべてのクリックハンドラーは同じtdRecordId値を指します。現在の反復の値を取得するには、それを行う関数ラッパーを使用する必要があります。