私は単純な JavaScript フォームを作成しています。これは、デバイスに関する情報を編集できるテキスト フィールドに移動するボタンがそれぞれの横にあるデバイスのリストです。代わりに、すべてのボタンを使用すると、リストの最後のデバイスの情報が表示されます。リストを作成しているスニペットは次のとおりです。
for(var i in portal.clients){
var row = document.createElement('tr');
var cell2 = document.createElement('td');
var button = document.createElement('button')
var title = document.createTextNode("Edit Config")
button.appendChild(title)
button.onclick = function(){displaySettingsPage(portal.clients[i]); console.log("Showing client: " + clientNum)}
cell2.appendChild(button)
row.appendChild(button)
var cell1 = document.createElement('td');
var client = document.createTextNode(portal.clients[i].info.description.name)
cell1.appendChild(client)
row.appendChild(cell1)
table.appendChild(row);
}
問題は、関数が意図したように宣言されたときではなく、ボタンがクリックされたときi
にonClick
関数宣言の が評価されることだと思います。関数の宣言時に変数を強制的に評価する方法はありますか? または、クライアント インデックスを関数に渡すために使用する必要がある他の方法はありますか?