亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

為啥函數外聲明了變量,在函數里面不能用,了解一下吧

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>display</title>
??? <script type="text/javascript">
??? var mychar = document.getElementById("con");
??????? function hidetext()?
??{?
??mychar.style.display="none";
???????
??}?
??function showtext()?
??{?
??mychar.style.display="block";
???????
??}
??? </script>
</head>
<body>?
??? <h1>JavaScript</h1>?
??? <p id="con">做為一個Web開發師來說,如果你想提供漂亮的網頁、令用戶滿意的上網體驗,JavaScript是必不可少的工具。</p>
??? <form>
?????? <input type="button" onclick="hidetext()" value="隱藏內容" />
?????? <input type="button" onclick="showtext()" value="顯示內容" />
??? </form>
</body>
</html>

正在回答

2 回答

因為

步驟一:var mychar = document.getElementById("con");這個語句是把p標簽的對象賦值給mycahr。

而這個動作是通過點擊“隱藏內容”和“顯示內容”來執行的。

你點擊隱藏內容執行hidetext()函數,而函數體內就執行了步驟一,然后執行mychar.style.display="none";并隱藏內容。

顯示內容也是如此。

你把var mychar = document.getElementById("con");放到函數體外的時候,當你點擊隱藏或顯示內容按鈕的時候,這個語句就沒有執行嘛。

這樣子就OK了。

var?mychar?=?null;????????function?hidetext()??		{??		????mychar=?document.getElementById("con");????????????mychar.style.display="none";		}??		function?showtext()??		{??		????mychar?=?document.getElementById("con");????????????mychar.style.display="block";		}


1 回復 有任何疑惑可以回復我~
#1

Test_Engineer

var mychar = null; function hidetext() { mychar= document.getElementById("con"); mychar.style.display="none"; } function showtext() { mychar = document.getElementById("con"); mychar.style.display="block"; }
2018-11-25 回復 有任何疑惑可以回復我~
#2

慕仙3797189 提問者 回復 Test_Engineer

你說的這種也是對的,我下午發現另外一種方法,可能是我之前概念的錯誤吧,是把<script>整體標簽放在<p>標簽的下面,這樣電腦處理程序時,就能識別出<script>中函數外的mychar的變量賦值了。
2018-11-25 回復 有任何疑惑可以回復我~
#3

HungerCheung 回復 慕仙3797189 提問者

牛批~
2018-12-07 回復 有任何疑惑可以回復我~

我也被你的問題困擾了很久....

body中最后加<script>var mychar = document.getElementById("con");</script>就好了

先執行p id=con后才能被getElementById獲取到,放在head中先執行getElementById的話根本沒有con這個元素。

函數是調用的,順序不影響執行,所以放在函數中就沒有順序問題了。

4 回復 有任何疑惑可以回復我~
#1

qq_慕工程9502817

大佬,這是什么原理啊,好神奇啊,求解釋
2018-12-16 回復 有任何疑惑可以回復我~
#2

Assain 回復 qq_慕工程9502817

其實這就是一個瀏覽器解釋順序的一個原理。由于此script標簽先于head被瀏覽器解釋了,而根據從上往下解釋的順序,那么是不是先解釋head再解釋Body的內容?那么是不是就是在script標簽被解釋后才開始解釋body內部的p標簽的內容,那么在script語句中的var mychar = document.getElementById("con");又不在函數體內(函數體需要調用才能被解釋),即優先執行。所以便在script被解釋的時候那么它并沒有找到id為"con"的對象,因此便會出現以上的問題。
2019-01-29 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為啥函數外聲明了變量,在函數里面不能用,了解一下吧

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號