第一,您需要刪除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