读书人

为什么定义在函数外的对象在函数内取不

发布时间: 2012-02-24 16:30:39 作者: rapoo

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

读书人网 >JavaScript

热点推荐