關(guān)于<script></script>位置的問題
<!DOCTYPE?HTML> <html> <head> <meta?http-equiv="Content-Type"?content="text/html;?charset=gb2312"> <title>display</title> ????<script?type="text/javascript">? ????????function?hidetext()?? ????????{?? ????????var?mychar?=?document.getElementById("con"); ????????mychar.style.display="none"; ????????}?? ????????function?showtext()?? ????????{?? ????????var?mychar?=?document.getElementById("con"); ????????mychar.style.display="block"; ????????} ????</script>? </head>? <body>?? ????<h1>JavaScript</h1>?? ????<p?id="con">做為一個(gè)Web開發(fā)師來說,如果你想提供漂亮的網(wǎng)頁、令用戶滿意的上網(wǎng)體驗(yàn),JavaScript是必不可少的工具。</p>? ????<form> ???????<input?type="button"?onclick="hidetext()"?value="隱藏內(nèi)容"?/>? ???????<input?type="button"?onclick="showtext()"?value="顯示內(nèi)容"?/>? ????</form> </body>? </html>
這個(gè)任務(wù)代碼中,<script>…var mychar = document.getElementById("con");
…</script>在<p id="con">…</p>之前,按照瀏覽器從上到下的解析渲染順序,此時(shí)javascript是無法獲取id="con"的元素的,所以后邊兩個(gè)顯示和隱藏的button應(yīng)該沒有反應(yīng)才對(duì),,,可是實(shí)際上,代碼執(zhí)行卻沒有任何問題,
比如下圖:<script></script>位置在前在后,結(jié)果可大不一樣啊
求解答??!
2016-01-29
第一個(gè)例子因?yàn)橛辛??onclick="hidetext() ?這句代碼,會(huì)直接在全局尋找并執(zhí)行hidetext() 這個(gè)函數(shù) ?javascript代碼所以在前在后沒區(qū)別 ?第二個(gè)例子就像你說的一樣,javascript代碼在前面并未或得到con元素,所以返回值為空,在后面就獲得了con的元素,所以有返回值 ??
2016-01-29
貌似第一章講過,通過事件調(diào)用執(zhí)行的function對(duì)位置沒什么要求。
2016-01-29
前一個(gè)代碼執(zhí)行沒有問題是因?yàn)楫?dāng)button顯示出來時(shí),script標(biāo)簽已經(jīng)加載完畢,可以執(zhí)行,后一個(gè)的差異是因?yàn)楫?dāng)script標(biāo)簽在頭部獲取id時(shí),body部分未加載出來,瀏覽器無法獲取所以值為null。