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

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

為什么變量在函數外定義就得不到結果?

代碼: ? ?

<script type="text/javascript">?

? ? ? ? var char=document.getElementById("con");

? ? ? ? function texthide()

? ? ? ? {

? ? ? ? ? ? char.style.display="none";

? ? ? ? }

? ? ? ? function textshow()

? ? ? ? {

? ? ? ? ? ? char.style.display="block";

? ? ? ? }

? ??

? ? </script>?

疑問:因為兩個function調用的對象都是p標簽,所以我就在外面定義了char=document.getElementById("con");但是運行的時候發現,這樣出來的按鈕沒有功能,也就是點隱藏、顯示都沒用,只能點著玩兒= =

而如果把char=document.getElementById("con");分別放到兩個function的{}里面,功能就能實現了。

這是為什么呢?

正在回答

4 回答

在函數外定義 的變量 要是想在函數內部調用 你在外部定義時候加個global 就可以了?

var global char=document.getElementById("con");.....其實就是局部變量和全局變量的意思一樣,只是形式跟我們平時看到不一樣而已,實質還是一樣的


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

TicoM 提問者

非常感謝!
2017-01-13 回復 有任何疑惑可以回復我~

貼出來的代碼已經是全局變量了。

問題應該出在,你的<script>標簽寫在head里面或者p標簽前面。

原因:

? ? ? ?瀏覽器解析HTML文檔時,從上往下,由于script在前,所以先解析script,當解析var?char=document.getElementById("con");時,瀏覽器無法抓取到id“con”,因為此id還未解析,所以返回給char變量一個null值。因此,后續點擊button也不會出現任何效果。

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

可以不用加global,通過這個問題可以看出你對如何定義變量,變量的作用域,什么是全局變量,什么是局部變量不是很清楚。 在函數外圍的,通過 var 變量名=value; 是全局變量,也就是說,這個變量作用于整個代碼段;在函數內部,var 變量名=value; 這種叫做局部變量,它的作用范圍僅限在函數內部,離開函數,則沒定義。如果你一定要在一個函數內部定義一個全局變量,那么則把var 去掉。但是一般我們不會這么用。你在這里犯的錯誤在于,你把在函數內部定義全局變量的方式,放在了函數外部,程序自然識別不了。

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

在函數外定義 的變量 要是想在函數內部調用 你在外部定義時候加個global 就可以了?

var global char=document.getElementById("con");

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

為什么變量在函數外定義就得不到結果?

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

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

幫助反饋 APP下載

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

公眾號

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