问答详情
源自:6-3 鼠标经过事件(onmouseover)

想问一下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>


提问者:weixin_慕桂英4346352 2020-07-05 14:25

个回答

  • 樱雪_sakura
    2020-12-15 15:13:08

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

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

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






  • 慕哥00470507
    2020-07-05 21:52:53

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