全局變量與局部變量問題,萌新提問~
匿名函數(shù)不能直接應用全局變量嗎?我這樣寫就不執(zhí)行了?
????????var?mychar?=?document.getElementById("con"); ????????function?hidetext(){ ????????????//var?mychar?=?document.getElementById("con"); ????????????mychar.style.display="none"; ????????}?? ????????function?showtext(){?? ????????????//var?mychar?=?document.getElementById("con"); ????????????mychar.style.display="block"; ????????}
2017-04-18
上面那位同學已經(jīng)講到點子上了,你的代碼毫無疑問是沒有錯的,但是為什么不行的,因為如果你在函數(shù)外面獲取這個?mychar變量是獲取不到的,瀏覽器解析你的頁面代碼是從上到下的,當看到函數(shù)外的你的全局變量的時候,dom并沒有開始加載,這時候他會疑問:'你是誰?'所以變量mychar的至為null;
而在函數(shù)里面可以執(zhí)行是因為當你點擊的時候dom已經(jīng)加載完畢,他可以正常的開心獲取到元素節(jié)點‘哦,我的id是text啊’
2017-03-23
讀了后面那節(jié)課我意識到我上面這個回答錯誤了,原來和PHP的不一樣。
在js里面,函數(shù)體外的聲明的是全局變量,函數(shù)內(nèi)也是可以使用的。
那為什么在這里你用了沒效果?是因為,瀏覽器是一行一行渲染HTML頁面的,讀到?var mychar = document.getElementById("con"); 這一句的時候,它還沒讀到下面的body部分,所以壓根不知道con是什么東西,所以返回的是個NULL。
那在這樣的情況下,用戶點擊按鈕,觸發(fā)事件調(diào)用了函數(shù)之后,函數(shù)里面的?mychar 是個NULL,所以就沒有效果了。
所以一般都會把js代碼放在底部,比如你試試把整個?<script></script>的代碼放到</form> 后面,再點按鈕就會發(fā)現(xiàn)有效了。
2017-03-23
函數(shù)是一個獨立的玩意,它只認識傳進來的參數(shù),不認識其他變量什么的。
除非你在函數(shù)體里面定義變量為全局變量,就可以引用函數(shù)體外的變量的值了。
2017-03-16
你想想,如果當你調(diào)用hidetext()函數(shù)的時候,會執(zhí)行hidetext()函數(shù)上面的語句嗎???????
2017-03-15
因為跟頁面加載順序有關(guān) 。先加載<p>標簽里的內(nèi)容,再抓取就只要一次
2017-03-13
http://idcbgp.cn/qadetail/199016
2017-03-13
你注釋掉了...