次の JavaScript には、望ましくない動作がいくつかあります。
<html>
<script>
function AddEventListener(el, listener)
{
el.addEventListener ? el.addEventListener('click', listener) :
el.attachEvent('onclick', listener);
}
function Init(parent)
{
var span = document.createElement("span");
span.innerText = "Span1";
AddEventListener(span, function() { alert(span.innerText); } );
parent.appendChild(span);
var span = document.createElement("span");
span.innerText = "Span2";
parent.appendChild(span);
}
</script>
<body onload="Init(document.getElementById('drop'));">
<div id='drop'></div>
</body>
</html>
をクリックすると、警告ウィンドウSpan1
にが表示されます。Span2
理由はわかりました:javascript変数のスコープ。しかし、私はそれを解決する方法がわかりません。
いくつかのコンテキスト:this.innerHTML
IE8を除いて正常に動作するものを使用しました。this
イベントリスナーの親ではなく、IE8 のウィンドウを指します。