2016-12-02 80 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() 

相关问题