2011-04-25 78 views
0


我只是想做一個測試,我習慣於在jQuery上工作,但不是「純」的JavaScript,我試圖綁定這個事件,我沒有得到事件的答案,我只是在html代碼中創建了一個鏈接和一個腳本標籤,其中:簡單的代碼與普通的js:addEventListener沒有響應

var li = document.getElementById('first');
li.addEventListener( '的onmouseover',函數(){
警報( 'OK');
})

能否請你告訴我什麼是錯呢?我沒有看到這個錯誤。
感謝

+2

嘗試'mouseover',全部小寫? – Jason 2011-04-25 21:37:21

+0

您正在使用哪種瀏覽器? – neebz 2011-04-25 21:52:27

+0

謝謝,但我不知道爲什麼,代碼沒有迴應。它迴應一個簡單的警報('好'),但沒有與onmouseover ...任何想法? – Paul 2011-04-25 22:39:44

回答

1

第一,您需要刪除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'); 
}; 
+0

謝謝,正如我對上一篇文章說,我有一個來自Firebug的錯誤,告訴我,變量是「空」...我在Mac - 鉻或Safari,你知道如何解決這個問題嗎? – Paul 2011-04-26 12:46:15

+0

@Paul:哪個變量? 'li'?如果是這樣,問題是文檔中沒有ID爲「first」的元素。如果存在這樣的元素,那麼如果腳本在元素出現在文檔的HTML中之前運行,那麼元素將不會在腳本運行時創建。 – 2011-04-26 12:55:52

+0

感謝您的回答,所有這些都是有道理的,但它仍然不需要。你可以嘗試在一個HTML編輯器?我剛剛使用了一個div,一個鏈接和一個簡單的onmouseover(我也嘗試過使用addEventListener),但事件不會被觸發:代碼

代碼 – Paul 2011-04-26 17:44:49

1

您可以在DOM直接分配處理函數到所選元素的onmouseover屬性:

var lis = document.getElementById('first'); 
lis.onmouseover = function() { 
    alert('yo'); 
}; 

上的jsfiddle:http://jsfiddle.net/entropo/YMGAy/

文檔:

編輯:
這裏實在是太使用addEventListener ...

li = document.getElementById('first'); 
li.addEventListener('mouseover', function(e) { 
    alert('ok'); 
}, false); 

http://jsfiddle.net/entropo/7FvZ7/
你失蹤的最後一個參數addEventListener(爲useCapture

+0

謝謝,但它仍然不起作用在我的電腦上!我複製了與jsFiddle完全相同的代碼,你可以嘗試將它寫入html頁面嗎? – Paul 2011-04-25 22:36:55

+0

哪個jsFiddle?另外,你使用的是什麼瀏覽器?在'element.addEventListener'文檔中查看IE上的註釋。如果可能,最簡單的方法是避免使用addEventListener,因爲您不必擔心處理IE。 – entropo 2011-04-25 22:51:09

+0

嗨,這兩個jsFiddle實際上,螢火蟲告訴我變量是「null」(它顯示了addEventListener行),但爲什麼?與這兩個例子,我有相同的結果...(我在Mac - 鉻或Firefox) – Paul 2011-04-26 12:43:09