第一,您需要删除addEventListener()
的“on”部分。其次,事件名称必须全部小写。第三,你错过了第三个参数,布尔值指示是否在捕获阶段处理事件,而不是冒泡阶段(如果有疑问,请使用false
)。
您需要考虑的另一个问题是,IE < = 8不支持addEventListener()
,因此您需要使用专有的attachEvent()
方法包含特定于IE的回退。
有了这一切,你的例子就变成:
var li = document.getElementById('first');
if (typeof li.addEventListener != "undefined") {
li.addEventListener('mouseover', function() {
alert('ok');
}, false);
} else if (typeof li.attachEvent != "undefined") {
li.attachEvent('onmouseover', function() {
alert('ok');
});
}
最简单的跨浏览器的解决方案是所谓的DOM0方法,使用元素的onmouseover
财产。然而,这具有每个元素仅允许每个事件有一个事件监听器的缺点,因此可能容易被其他代码覆盖。
li.onmouseover = function() {
alert('ok');
};
尝试'mouseover',全部小写? – Jason 2011-04-25 21:37:21
您正在使用哪种浏览器? – neebz 2011-04-25 21:52:27
谢谢,但我不知道为什么,代码没有回应。它回应一个简单的警报('好'),但没有与onmouseover ...任何想法? – Paul 2011-04-25 22:39:44