2
javascriptを使用して配列から値を取り込むドロップダウンをしようとしています。各アイテムにはイベントトリガーが接続されている必要がありますが、現在は最後のエレメントにのみイベントが接続されています。私はクロージャを固定することに基づいて例を試しましたが、まだ最後の要素にしか付着していません。 innerHTML
が破壊財産であるためだ要素を注入し、JavaScriptでループ内のClickイベントハンドラをアタッチする
https://jsfiddle.net/z3h1uux4/
var ArrayUName = ["A","B","C"]
var ArraySlug = ["Q","W","E"]
for (i = 0; i < ArrayUName.length; i++) {
var GoalID = ArrayUName[i] + '-' + ArraySlug[i];
document.getElementById("TheContent").innerHTML +=
'<a class="GoalIDBtn" id="' + GoalID + '">' + ArrayUName[i] + '/' + ArraySlug[i] + '</a></br>';
(function(_i, _GoalID)
{document.getElementById(_GoalID).addEventListener(
"click",
function() {alert("Click Made : " + _i)}
);
})(i, GoalID);
console.log("Loop #" + i);
}
もし2つのdoループがあれば、1つは作成し、もう1つはハンドラを追加すると動作しますか? –
@JasonAllanはい、それは必須ではありません。私はその答えを更新して、「うまくいく」フィドルを追加します。 – undefined
キャンセルします。それを修正してください。どうもありがとうございます! –