2016-12-02 108 views
0

我試圖用getElementById()獲取元素,但它返回null。即使元素存在,Javascript-getElementById()也會返回null

這是我得到的Mozilla Firefox瀏覽器的調試器錯誤

"TypeError: document.getElementById(...) is null".

什麼是錯誤的代碼?

<html> 
 
    <head> 
 
    <title>Stack</title> 
 
    <style type="text/css"> 
 
     .para1{position:absolute;top:10px;left:120px;z-index:0;border:solid;padding:80px;width:300px;background-color:aqua} 
 
     .para2{position:absolute;top:50px;left:150px;z-index:0;border:solid;padding:80px;width:300px;background-color:#ff0} 
 
     .para3{position:absolute;top:100px;left:180px;z-index:0;border:solid;padding:80px;width:300px;background-color:red} 
 
    </style> 
 
    </head> 
 
    <body> 
 
    <p class="para1" id="p1" onmouseover="toTop('p1')">Frame One</p> 
 
    <p class="para2" id="p2" onmouseover="toTop('p2')">Frame Three</p> 
 
    <p class="para3" id="p3" onmouseover="toTop('p3')">Frame Two</p> 
 
    <script type="text/javascript"> 
 
     var top = 'p3'; 
 
     function toTop(newTop) { 
 
     domTop = document.getElementById(top).style 
 
     domNew = document.getElementById(newTop).style 
 
     domTop.zIndex = "0" 
 
     domNew.zIndex = "10" 
 
     top = newTop 
 
     } 
 
    </script> 
 
    </body> 
 
</html>

+0

爲什麼第一'的getElementById()'取參數'top'?這是不會設置,直到你的函數結束 – WillardSolutions

+2

@EatPeanutButter'var top ='p3'' – xShirase

回答

8

top似乎是一個保留變量 - 它解析爲window.top在你的函數。嘗試命名top其他的東西,如_top,你不應該得到任何錯誤。

+0

Worked.Thank you so much much –

+0

我相信'top'是一個「主機對象」 – Scribblemacher

0

試着改變你的腳本,像這樣的:

(function(window, document, undefined){ 

// code that should be taken care of right away 

    window.onload = init; 

    function init(){ 
     var top='p3' 
     function toTop(newTop) { 
     domTop=document.getElementById(top).style 
     domNew=document.getElementById(newTop).style 
     domTop.zIndex="0" 
     domNew.zIndex="10" 
     top=newTop 
     } 
    } 

})(window, document, undefined); 

所以它不跑,直到之後的文檔完全加載。我知道腳本是在你的身體語句的末尾,但這仍然可能導致問題。另外它看起來像你的功能從來沒有真正被稱爲。你需要的功能後,將其更改爲IIFE或添加

toTop() 

相關問題