即使元素存在,getElementById()也会返回null
我试图用getElementById()获取元素,但即使元素存在但它仍返回null。我究竟做错了什么?即使元素存在,getElementById()也会返回null
<html>
<head>
<title>blah</title>
<script type="text/javascript">
alert(document.getElementById("abc"));
</script>
</head>
<body>
<div id="abc">
</div>
</body>
你必须把这个在document
load
事件。在脚本执行的时候DOM还没有到达abc
。
这是因为脚本在页面呈现之前运行。
为了证明这个属性添加到身体标记:
<body onload="alert(document.getElementById('abc'));" >
但它不存在,而不是在HTML这一点。就像程序运行一样,HTML文档从上到下被解析。最好的解决方案就是将脚本标签放在页面底部。您也可以将JavaScript附加到onload事件。
您的脚本在DOM加载之前运行。为了解决这个问题,你可以把你的代码在window.onload
功能,像这样:
window.onload = function() {
alert(document.getElementById("abc"));
};
另一种方法是把你的script
权前收盘</body>
标签。
“之前/ BODY”可能会混淆初学者。要求是将SCRIPT放在脚本需要引用的HTML元素之后。到/ BODY的距离不相关。 – 2011-03-20 20:02:14
谢谢先生。你从24小时的压力说我。 – Edwinfad 2017-09-17 12:18:50
如果你不想连接到负载事件后来干脆把你的脚本在机身的底部,所以它会在最终
<html>
<head>
<title>blah</title>
</head>
<body>
<div id="abc">
</div>
<script type="text/javascript">
alert(document.getElementById("abc"));
</script>
</body>
</html>
执行把脚本在底部对初学者来说可能更容易。 – 2011-03-20 19:51:42
啊,谢谢!始终认为脚本是在html加载后运行的。 – Softnux 2011-03-20 19:56:01
请注意,您必须等待10分钟才能接受。 – pimvdb 2011-03-20 20:06:08