addEventListener()
関数の問題が発生しています。私は配列から変数に基づいてメニューを構築しようとしています(私はなぜこのように設定されているか説明しません)。ここでループ内でイベントリスナーが動作しない
はコードです:
function menuLoop (n) {
return function() {
menuLink (n);
}
}
さて、迷惑な部分:ここで
var _Dirt = document.getElementById("dirt");
_Dirt.addEventListener('mouseover', function() { menuOver(true, this, _dirtY); }, false);
_Dirt.addEventListener('mouseout', function() { menuOver(false, this, _dirtY); }, true);
var _DirtDiv = _Dirt.getElementsByTagName('div')[0];
for (nLink in Men["dirt"]) {
var _lnk = document.createElement('p');
_lnk.className = 'menu';
_lnk.innerHTML = Men["dirt"][nLink][0];
_lnk.addEventListener('click', menuLoop(Men["dirt"][nLink][1]), false);
_DirtDiv.appendChild(_lnk);
_DirtDiv.innerHTML+= '<br />';
}
はmenuLoop機能は、(場合にあなたは私が正しく変数権利を結合しないよという懸念しているですイベントリスナーは_Dirt
要素で正常に動作していますが、_lnk
要素では正常に動作していません。_lnk.onclick = function() { //something }
に変更しても動作しません(実際にはonclick
属性でもsどのようにDOMの中で)。
私は要素にイベントリスナも付ける別のループ関数を持っていますが、それは完璧に動作します...そしてコードは非常に似ています。フラストレーションに加えて、このコードは完璧に機能していました。私は実際には、このコードをまったく変更することを思い出していません。私はスクリプト内にブレークポイントがあるかどうかを調べるためにこの関数をコード内で分離しようとしましたが、問題は残ります。
私のコードの他の部分が必要な場合は教えてください。
はあなたを持っています単にイベントを確実にするために、イベントハンドラの 'menu(' [dirt "] [nLink] [1])'の代わりに 'menu(' [dirt]] [火事? – Yaniro
* "onclick'属性は表示されません" *属性を追加していないためです。あなたはDOMとそのイベントシステムに直接取り組んでいます。 –
@Yaniro:はい、私はそれを試みました。役立たず。私はない:私はonclickイベントを追加するときに参照していた。イベントリスナーを追加すると、DOMに表示されません。 –