JavaScript でテーブルを作成していますが、リンクが含まれているセルが含まれており、クリックすると関数が起動します。セルはループに追加されており、i
サイクルごとにインクリメントi
され、関数にパラメーターとして埋め込まれます。
以下のコードを使用するとalert(i);
、受信関数で正しい番号を取得できません。1 つには、反復に関係なく追加された要素にはすべて番号があります3
(おそらく偶然ではなく、3 レコードのデータ ソースでこれをテストしています)。
コード
// Add supplier name to cell as a link
var a = document.createElement('a');
var linkText = document.createTextNode(data[i].supName);
a.appendChild(linkText);
a.title = "Click to create a purchase order.";
a.href = "#";
alert('inserting '+i); // diagnostic line
a.onclick = function(){postData ('main/createPO.php', '', 'makePO(resp,'+i+')', '', '')};
td1.appendChild(a);
tr.appendChild(td1);
上記はfor
、 がインクリメントされるループ内にありi
ます。
診断アラートが発生します。
inserting 0
inserting 1
inserting 2
...しかし、埋め込みi
は常に 3 のようです!
これは重要な行です:
a.onclick = function(){postData ('main/createPO.php', '', 'makePO(resp,'+i+')', '', '')};