為什么變量在函數外定義就得不到結果?
代碼: ? ?
<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的{}里面,功能就能實現了。
這是為什么呢?
2017-01-13
在函數外定義 的變量 要是想在函數內部調用 你在外部定義時候加個global 就可以了?
var global char=document.getElementById("con");.....其實就是局部變量和全局變量的意思一樣,只是形式跟我們平時看到不一樣而已,實質還是一樣的
2017-12-08
貼出來的代碼已經是全局變量了。
問題應該出在,你的<script>標簽寫在head里面或者p標簽前面。
原因:
? ? ? ?瀏覽器解析HTML文檔時,從上往下,由于script在前,所以先解析script,當解析var?char=document.getElementById("con");時,瀏覽器無法抓取到id“con”,因為此id還未解析,所以返回給char變量一個null值。因此,后續點擊button也不會出現任何效果。
2017-01-20
可以不用加global,通過這個問題可以看出你對如何定義變量,變量的作用域,什么是全局變量,什么是局部變量不是很清楚。 在函數外圍的,通過 var 變量名=value; 是全局變量,也就是說,這個變量作用于整個代碼段;在函數內部,var 變量名=value; 這種叫做局部變量,它的作用范圍僅限在函數內部,離開函數,則沒定義。如果你一定要在一個函數內部定義一個全局變量,那么則把var 去掉。但是一般我們不會這么用。你在這里犯的錯誤在于,你把在函數內部定義全局變量的方式,放在了函數外部,程序自然識別不了。
2017-01-13
在函數外定義 的變量 要是想在函數內部調用 你在外部定義時候加個global 就可以了?
var global char=document.getElementById("con");