7
24
2008
2

[JavaScript]一个全局变量不能用的问题

今天写了一段JavaScript的代码让我很奇怪

<html>
<head>
<script language="javascript">
var userName = document.getElementById('username');
function foo(){
    alert(userName.value);
    return false;
}
</script>
</head>
<body>
<form action="a.php" method="POST" onsubmit="return foo();">
<input type="text" name='username' id='username' />
<input type="submit" value="提交">
</form>
</body>
</html>

点击提交时应该弹出userName的值,但这段代码弹的值却是null

查了半天谷歌终于找到了原因

"放在对应的id后面就可以了。虽然你的userName 是全局变量,但是如果你放在获取dom的前面的话,获得到的值就是null。"

恍然大悟,于是把代码修改了一下 将script代码放到了</body>下面,马上可以用了,ie,FireFox都没问题

<html>
<head>
</head>
<body>
<form action="a.php" method="POST" onsubmit="return foo();">
<input type="text" name='username' id='username' />
<input type="submit" value="提交">
</form>
</body>
<script language="javascript">
var userName = document.getElementById('username');
function foo(){
    alert(userName.value);
    return false;
}
</script>
</html>

那个人还有一个建议"但做法还是建议在执行操作时临时获得对象,如果放在body后面的话对资源是浪费的。"

这句话我还需要理解理解,呵呵,毕竟还是JavaScript的新手嘛

Category: JavaScript | Tags: javascript 全局变量

Host by is-Programmer.com | Power by Chito 1.3.3 beta | Theme: Aeros 2.0 by TheBuckmaker.com