javascript document.getElementById(“device”)不起作用?
问题描述:
为什么alert(p1)
显示null
?javascript document.getElementById(“device”)不起作用?
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="js/product.js"></script>
</head>
<body>
Device:<select id="device" name="device" style="width:250px;"> </select> Line:<select id="line" name="line" style="width:250px;"> </select>
</body>
</html>
window.onload = load();
function load() {
var p1 = document.getElementById("device");
var l1 = document.getElementById("line");
alert(p1);
alert(l1);
}
答
你需要改变这一行:
window.onload = load();
要阅读以下内容:
window.onload = load;
注意区别,第一个例子会调用load()
函数,并将其返回值分配给window.onload
,当然这将是undefined
。
第二个示例会将函数本身分配给window.onload
,这正是您想要的,并且会提示[object HTMLSelectElement]
(在Firefox中)。
+0
THX为您提供帮助! – wenchiching 2011-12-27 07:17:46
答
你的代码改成这样:
function load() {
var p1 = document.getElementById("device");
var l1 = document.getElementById("line");
alert(p1);
alert(l1);
}
window.onload = load;
的分配为onload需要一个函数引用,而不是函数(没有括号)执行。
有些简单将利用这样的匿名函数:
window.onload = function() {
var p1 = document.getElementById("device");
var l1 = document.getElementById("line");
alert(p1);
alert(l1);
}
mine [曾经](http://jsfiddle.net/CruhJ/) – OnesimusUnbound 2011-12-27 07:01:34
你错了。它不显示null:http://jsfiddle.net/5DjuW/ – bjornd 2011-12-27 07:02:37
伙计们,默认的jsfiddle将调用包装到库的onLoad事件中(默认情况下是MooTools)。您应该在左侧面板中选择'no wrap(head)'来重现问题 – 2011-12-27 07:04:16