日期:2014-05-16  浏览次数:20335 次

为什么定义在函数外的对象在函数内取不着
<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>