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后执行。