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