LI要素をクリックすると特定のdivが表示されるようにリストを作成しようとしています。ディクショナリから div の id とその他のプロパティを読み取りたい。したがって、辞書は次のようになります。
var ifSrc = {"welcome":"welcome.html",
"proceduresAndComputers":"../proceduresAndComputers/index.html",
"someId":"../someSourceFileForAnIFrame"}
およびそれらの LI 要素を形成する関数
function createMenu(){
var listy = document.getElementById("sidebar");
for(var key in ifSrc){
var elem = document.createElement('li');
elem.innerHTML = key;
elem.className = "unselected";
elem.addEventListener("click",function(){openDiv(this,key);},false);
listy.appendChild(elem);
}
listy.firstElementChild.className="selected";
}
そのため、メニュー (LI 要素を含む UL) は問題ないように見えますが、どの LI をクリックしても、openDiv 関数は に正しい値を渡しますが、 にはthis
同じ値を渡しますkey
。key
特に、ifSrc
辞書の最後の値を渡します。ただし、各 elem ( に設定されているkey
) の innerHTML は正常に表示されます。addEventListener のドキュメントを確認しましたが、あまり見つかりませんでした。
なぜこうなった?洞察はありますか?