为什么定义在函数外的对象在函数内取不着
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script>
var str="你好";
var myobject=document.getElementById("mybutton");
function a(){
alert(myobject);
alert(str);
}
window.onload=a;
</script>
</head>
<body>
<input type="text" name="textfield" id="mybutton">
</body>
</html>
定义在函数外提示变量为空,但字符串可用
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
<script>
var str="你好";
function a(){
var myobject=document.getElementById("mybutton");
alert(myobject);
alert(str);
}
window.onload=a;
</script>
</head>
<body>
<input type="text" name="textfield" id="mybutton">
</body>
</html>
对象定义在函数内才可用,这是什么原因?
------解决方案--------------------定义在外部的时候,当var myobject=document.getElementById("mybutton");这句执行的时候,window.onload还没有装载完。。。。所以找不到mybutton
------解决方案--------------------var myobject=document.getElementById("mybutton");
和
<input type="text" name="textfield" id="mybutton">
存在执行顺序关系。
------解决方案--------------------上边的都说得很清楚了
也就是说你取值的时候还不存在mybutton这个对象 懂吗?
所以取得的是null
如果你改成这样 就可以取到值了 :
<html>
<head>
<link href="css.css" rel="stylesheet" type="text/css">
</head>
<script type='text/javascript'>
var str="你好";
function a(){
alert(myobject);
alert(str);
}
window.onload=a;
</script>
<body>
<input type="text" name="textfield" id="mybutton">
<script>
var myobject=document.getElementById("mybutton");
</script>
</body>
</html>