1. 程式人生 > >【小白】javascript中的“文件已完成載入後執行 document.write,整個 HTML 頁面將被覆蓋”

【小白】javascript中的“文件已完成載入後執行 document.write,整個 HTML 頁面將被覆蓋”

document.write已經遇到過好幾次了,還是得弄弄清楚。

W3cschool上面有一道練習題,如下(圖片1)

結果輸入的時候h1跟p段落全部被覆蓋,只有語句“糟糕!文件消失了”

圖片中出現的關鍵字“如果在文件已完成載入後執行 document.write,整個 HTML 頁面將被覆蓋”。

疑問1:document.write的工作原理是什麼,為什麼會覆蓋

疑問2:什麼叫做“文件已完成載入”

載入文件的時候就像是建立了document物件,可以向檔案流寫入東西,就像在script標籤裡面直接寫一句

<script>

    document.write(“123”);

</script>

那個document是一邊載入一遍進行寫操作,但是文件載入成功之後,這個document物件就會關閉了。

如果你這時你又重新載入了文件,比如說你呼叫了函式(在js中執行編寫好程式後只是聲明瞭有這個函式,但並沒有呼叫,所以你一旦呼叫,就會重新載入文件),如下

<script>

   function  reUse(){

     document.write(“123”);

  }

</script>

就會新建一個document物件,它會覆蓋你之前的內容。這跟你函式放的位置無關,無論是在其他輸出語句的前後,還是說在head或body裡面寫就不一樣,而是呼叫的時機,要明確什麼時候文件會重新載入。

明確覆蓋的原理後,主要在於是否會重新載入文件。重新載入文件的時機是什麼:呼叫函式,或許還有其他。