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

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

Javascript的值為什么會變成Hello world出現在上面?

想問下是什么原因呢?

1/是因為程序在執行HTML文件時會提前預加載或者預編譯script文件所以javascript的值被改變了;

2/是因為程序是按從上到下順序執行,然后執行到document.write("P標簽原始內容:"+mycon.innerHTML);后將javascript的值改為Hello world.

想請教下這兩種哪種對的呢?還是有其他的解釋?謝謝

正在回答

5 回答

<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/>
<title>innerHTML</title>
<script?type="text/javascript">

//?瀏覽器解析你的代碼是從上到下,此時,瀏覽器開始解析var?mychar=document.getElementById("con");
??var?mychar=document.getElementById("con");
??//很神奇的發現??mychar?這個變量是undined,為什么呢,因為此時<body></body>里面的代碼瀏覽器還沒有開始看
??//?所以你通過id來找document.getElementById("con")是找不到的;,所以下面的mychar的變量都是無意義的
??//結果就是js代碼失效
??document.write("原標題:"+mychar.innerHTML+"<br>");?//輸出原h2標簽內容
??mychar.innerHTML="Hello?world!";
??document.write("修改后的標題:"+mychar.innerHTML);?//輸出修改后h2標簽內容
??
??//所以要么把script里面的內容放在下面,一定要放在你要獲取id節點下面,比如你沒有用到p標簽,其實放在p標簽上面,和下面也行
??//2,通過window.onload=function(){?你的js代碼??},的方法,他的作用是當頁面加載完之后開始調用
??
??
</script>
</head>
<body>
<h2?id="con">javascript</h2>
<p>?JavaScript是一種基于對象、事件驅動的簡單腳本語言,嵌入在HTML文檔中,由瀏覽器負責解釋和執行,在網頁上產生動態的顯示效果并實現與用戶交互功能。</p>
</body>
</html>


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

suBJuly 提問者

OK 懂了。萬分感謝!以后不懂的還望指教一二。
2017-04-19 回復 有任何疑惑可以回復我~
#2

我不是管家 回復 suBJuly 提問者

沒事,我也在鞏固一下自己的基礎,準備吧原生js從頭看一遍
2017-04-19 回復 有任何疑惑可以回復我~
<!DOCTYPE?HTML>
<html>
<head>
<meta?http-equiv="Content-Type"?content="text/html;?charset=utf-8"?/>
<title>innerHTML</title>
<script?type="text/javascript">
??var?mychar=document.getElementById("con");
??document.write("原標題:"+mychar.innerHTML+"<br>");?//輸出原h2標簽內容
??mychar.innerHTML="Hello?world!";
??document.write("修改后的標題:"+mychar.innerHTML);?//輸出修改后h2標簽內容
</script>
</head>
<body>
<h2?id="con">javascript</h2>
<p>?JavaScript是一種基于對象、事件驅動的簡單腳本語言,嵌入在HTML文檔中,由瀏覽器負責解釋和執行,在網頁上產生動態的顯示效果并實現與用戶交互功能。</p>
</body>
</html>


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

可能是這樣的,script的確在哪都能運行,但是要看下你的代碼是否與body里面的內容有關聯,如果僅僅是document.write("P標簽原始內容:"),這樣是可行的,但是如果要獲取body里面的節點的話獲取不到,

最好貼下代碼













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

suBJuly 提問者

好的,這種情況下在head中的script代碼為什么不會執行?比如說里面的document為什么不能正確的顯示出來呢?求解
2017-04-19 回復 有任何疑惑可以回復我~
#2

suBJuly 提問者

代碼回復中不能超過300字,我給放在下面的回答里面了,你看看。
2017-04-19 回復 有任何疑惑可以回復我~

實際操作可以發現,當你把script的內容放在body上面的時候,頁面報錯,因為你無法獲取id,這是因為瀏覽器解析這個頁面是從上到下,當他執行JavaScript的代碼是,dom并沒有開始加載;

當script放在body下面時,由于從上至下,dom已經解析完成,這時候可以獲取屬性節點id,就可以使用innerHtml的方法更改元素節點的內容

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

suBJuly 提問者

你確定?你可以試試把script里面的內容放在body上面head中時的情況。一樣會顯示出來。
2017-04-18 回復 有任何疑惑可以回復我~
#2

我不是管家 回復 suBJuly 提問者

你把代碼貼一下,我操作是不行的,除非家window.onload=function(){}
2017-04-18 回復 有任何疑惑可以回復我~

第二種

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

舉報

0/150
提交
取消

Javascript的值為什么會變成Hello world出現在上面?

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

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

幫助反饋 APP下載

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

公眾號

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