var list = document.getElementById("list");
for (let i = 1; i <= 5; i++) {
let item = document.createElement("li");
item.appendChild(document.createTextNode("Item " + i));
item.onclick = function (ev) {
console.log("Item " + i + " is clicked.");
};
list.appendChild(item);
}
letのところをvarにすると、どの行をクリックしても"Item 6 is clicked."となってしまう。
letなら上手くいく。
さてwindows7あたりのIEだとまだletがサポートされてなくて上手くいかない。
a="Item " + i + " is clicked."
item.onclick = function (ev) {
console.log(a);
};
なんてすると、なぜか上手く動いてしまう。IEの不具合だとおもう。現在のchrom等のブラウザだと上手くいかない。
昔書いたコードにたまたま動いているやつがいて、ブラウザが新しくなると動かなくなるるのではないかとヒヤリとしている。
昔の環境での正解はなんだろう。タグのプロパティー(例えばvalue)としてiの値を埋め込んでやり、実行時に読み出すのかな。
console.log(a);
};
なんてすると、なぜか上手く動いてしまう。IEの不具合だとおもう。現在のchrom等のブラウザだと上手くいかない。
昔書いたコードにたまたま動いているやつがいて、ブラウザが新しくなると動かなくなるるのではないかとヒヤリとしている。
昔の環境での正解はなんだろう。タグのプロパティー(例えばvalue)としてiの値を埋め込んでやり、実行時に読み出すのかな。
0 件のコメント:
コメントを投稿