2011-11-17 56 views
1

我想觸發一個javascript onMouseOver事件,而不必在我的錨屬性的每個人的onMouseOver屬性。實際上,我想在用戶將鼠標放在元素上時顯示其他一些錨點,但我甚至無法獲得警報。我不斷收到的錯誤:Javascript OnMouseOver無屬性

Uncaught TypeError: Cannot call method 'getElementsByTagName' of null

,因爲如果我提醒了getElementById()我結束了一個DIV元素,它應該再進去的是,所有的錨標籤來沒有任何意義,我div元素...不知道我錯過了什麼。

的jsfiddle鏈接:http://jsfiddle.net/NfTtq/

另外請注意我在做此Javascript不是JQuery的:S

回答

3

你正在努力尋找的元素存在之前,你可以的jsfiddle做到這一點從屏幕左側選擇onDomReady而不是no wrap (head)

另一個問題是onMouseOver,JavaScript是區分大小寫的,所以只有onmouseover將工作。

這裏被更新的jsfiddle:

http://jsfiddle.net/NfTtq/1/

+0

Ohhhhh這是有道理的,從上到下閱讀好吧。是否有一種JavaScript方式來判斷文檔是否已經準備好,而不需要在內部有東西? document.ready()什麼的? –

+0

只需在標記之前運行您的依賴於元素的javascript即可。這種方式只能在頁面中的所有元素之後才能找到代碼,並且在代碼執行時存在代碼。 '$(document).ready(fn)'是jQuery,在普通的javascript中沒有相應的跨瀏覽器。 – Esailija

+0

把它放在頁腳上工作。 :D謝謝你以後會記得這個! –

0

的onmousedown事件事件寫入只小盤股,對DOM調用時。這爲我工作:

var node = document.getElementById('navFloat').getElementsByTagName('a'); 
node[0].onmouseover= function() 
{ 
    document.getElementById('homeDrop').style.display = 'block'; 
} 
1

您正在執行HTML腳本之前加載,所以你需要把它放到在window.onload

http://jsfiddle.net/NfTtq/5/

window.onload= function() 
    { 

     var node = document.getElementById('navFloat').getElementsByTagName('a'); 
     node[0].onmouseover = function() 
     { 
      alert('yes'); 
      document.getElementById('homeDrop').style.display = 'block';    
     } 
} 
0

這個代碼將在所有的瀏覽器.....

<p> 
<a href="/"> 
<img alt="Ovdje uključiti " 
src="errorimages/normal.png" 
onmouseover="this.src='errorimages/hover.png'" 
onmousedown="this.src='errorimages/press.png'" 
onmouseup="this.src='errorimages/hover.png'" 
onmouseout="this.src='errorimages/normal.png'" 
></a> 
</p> 
+0

歡迎來到Stack Overflow!你能否請[編輯]解釋爲什麼這個代碼回答這個問題? – Scimonster