为了账号安全,请及时绑定邮箱和手机立即绑定

想问一下var pwd放在外面不是全局变量吗?为什么要放在函数里面才行

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title> 鼠标点击事件 </title>

<script type="text/javascript">


var pwd=document.getElementById("password").value;

    function message(){

        

        if(pwd==""){

       confirm("请输入密码后,再单击确定!"); 

        }else{

             alert("登陆成功");

        }

    }

</script>

</head>

<body>

<form>

密码:<input name="password" type="password" id="password">

<input name="确定" type="button" value="确定" onclick="message()"/>

</form>

</body>

</html>


正在回答

2 回答

按照加载当顺序,当你加载 js 的时候,DOM 都还没有构建完成呢,你拿到的 document.getElementById("password") 是个 null,null 怎么会有 value 呢?所以一定会报错。

放在函数里面是因为当你点击的时候 DOM 已经构建完成了,所以 pwd 是一定存在的,所以不会报错。

另外放在函数外面的确是全局变量,但是在网页加载顺序上不对,js 是个脚本语言,不能没有 DOM 的时候你去操作了 DOM,那浏览器渲染这个 DOM 的时候是听谁的。






2 回复 有任何疑惑可以回复我~

你可以把整段script移到body那边去,就可以写成全局变量了。个人理解是网页按顺序加载下来,如果全局变量的话,取不到后加载的节点。等网页加载完成,在声明变量才可以取到,所以写在函数内。

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

想问一下var pwd放在外面不是全局变量吗?为什么要放在函数里面才行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信