2013-02-18 150 views
0

下面是函數:爲什麼這個腳本只能輸出一半的輸出?

function funct1() 
{ 
    document.getElementById("demo").innerHTML="Something"; 
    document.write("Mexico!"); 
} 

輸出只有:

Mexico 

當我點擊頁面上的按鈕,而我想要的輸出是:

Something 
Mexico 
+5

在顯示頁面後調用'document.write()'時,整個頁面將被覆蓋。 – Pointy 2013-02-18 15:31:52

回答

2

在這種情況下,document.write()不符合您的想法。它清除了文檔的內容,並寫入Mexico!(請參閱Quentin的答案以獲取更詳細的解釋)。如果你刪除這一行,你可以看到你的第一條語句被正確執行。

如果你要更新的第一個段落,並添加另一個,你應該使用下面的代碼:

function funct1() 
{ 
    document.getElementById("demo").innerHTML = "Something"; 

    // Create a new <p> element, set its HTML and then append it: 
    var newP = document.createElement('p'); 
    newP.innerHTML = 'Mexico!'; 
    document.body.appendChild(newP); 
} 

你可以看到一個工作jsFiddle here

+0

您可能想提及'document.write'本身並不「清除文檔內容」。這是文件已關閉的事實,它是這樣做的。 – Ian 2013-02-18 15:34:11

+1

謝謝伊恩,更新了一些信息,實際上回答了這個問題:) – BenM 2013-02-18 15:37:50

2

在設置演示的innerHTML之後,您可以撥打document.write。由於此時文檔處於關閉狀態,因此會隱式調用document.open,其中會刪除整個現有文檔(包括您剛剛分配的內容爲innerHTML)。 然後您寫的墨西哥!到新文件。

在DOM準備就緒後(並且在其他時間避免這樣做),切勿調用document.write。改用DOM操作。

相關問題