JavaScript getElementByID()不工作

为什么refButton在下面的JavaScript代码中得到null

 <html> <head> <title></title> <script type="text/javascript"> var refButton = document.getElementById("btnButton"); refButton.onclick = function() { alert('I am clicked!'); }; </script> </head> <body> <form id="form1"> <div> <input id="btnButton" type="button" value="Click me"/> </div> </form> </body> </html> 

在你调用你的函数的时候,页面的其他部分还没有被渲染,所以元素在那个时候是不存在的。 尝试调用你的函数window.onload也许。 像这样的东西:

 <html> <head> <title></title> <script type="text/javascript"> window.onload = function(){ var refButton = document.getElementById("btnButton"); refButton.onclick = function() { alert('I am clicked!'); } }; </script> </head> <body> <form id="form1"> <div> <input id="btnButton" type="button" value="Click me"/> </div> </form> </body> </html> 

您需要将JavaScript 放在主体标签的末尾。

它没有find它,因为它不在DOM中!

你也可以像下面这样将它包装在onload事件处理程序中:

 window.onload = function() { var refButton = document.getElementById( 'btnButton' ); refButton.onclick = function() { alert( 'I am clicked!' ); } } 

因为当脚本执行时浏览器还没有parsing<body> ,所以它不知道有一个指定了id的元素。

试试这个:

 <html> <head> <title></title> <script type="text/javascript"> window.onload = (function () { var refButton = document.getElementById("btnButton"); refButton.onclick = function() { alert('Dhoor shala!'); }; }); </script> </head> <body> <form id="form1"> <div> <input id="btnButton" type="button" value="Click me"/> </div> </form> </body> </html> 

请注意,您可以使用addEventListener而不是window.onload = ...来使该函数仅在整个文档被parsing后执行。