以下 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 中的窗口,而不是事件侦听器的父级。