想問一下var pwd放在外面不是全局變量嗎?為什么要放在函數(shù)里面才行
<!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>
2020-12-15
按照加載當順序,當你加載 js?的時候,DOM?都還沒有構建完成呢,你拿到的 document.getElementById("password")?是個?null,null?怎么會有?value?呢?所以一定會報錯。
放在函數(shù)里面是因為當你點擊的時候?DOM?已經(jīng)構建完成了,所以 pwd?是一定存在的,所以不會報錯。
另外放在函數(shù)外面的確是全局變量,但是在網(wǎng)頁加載順序上不對,js?是個腳本語言,不能沒有?DOM?的時候你去操作了?DOM,那瀏覽器渲染這個?DOM 的時候是聽誰的。
2020-07-05
你可以把整段script移到body那邊去,就可以寫成全局變量了。個人理解是網(wǎng)頁按順序加載下來,如果全局變量的話,取不到后加載的節(jié)點。等網(wǎng)頁加載完成,在聲明變量才可以取到,所以寫在函數(shù)內。