0

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+')', '', '')};
4

2 に答える 2

1

問題を回避する簡単な方法があります。この問題のより複雑なバージョンがありました。

要素ごとに、カスタム属性を作成するだけです。

$(a).attr("myValue", i);

次に、.click で Number($(this).attr("myValue")); を渡すだけです。

于 2013-04-02T23:24:32.283 に答える