2016-02-15 44 views
1

爲什麼文檔不會被修改,直到它不在循環中?

while (prompt() !== "quit") { 
 
    document.write("test "); 
 
}

我期待這個JavaScript每當我寫的東西,這不是quit時間修改頁面的對話框後面。

然而它不這樣做,直到我輸入quit。 (然後我看到一堆test s。) 我完全錯過了什麼?

+0

「修改文檔」是什麼意思?它只是打印'test',直到你輸入'quit'。 –

+2

這似乎與瀏覽器相關。在FireFox/Ubuntu上,你有在測試框後面顯示的「測試」。 – Blag

+0

@Blag在Chrome/Mac和Firefox/Mac上。請回答我的問題,以便我可以接受您的答案。 – Yassine

回答

1

刷新您的警報框背後的視圖似乎與瀏覽器相關。

有些會在兩個警報框(作爲我在Ubuntu上的Firefox)之間更新它,但是您可能會在生成新框架視圖之前等待警報框關閉。

0

JavaScript while循環將在運行前檢查條件(prompt() !== "quit")document.write("test ");這就是您沒有看到文檔被修改的原因。 - 這一切塊在頁面上的其他人關閉它之前

while (prompt() !== "quit") { 
    document.write("test "); //waiting for prompt() 
} 
0

,直到鍵入的東西到提示,點擊進入,不會執行循環體。而且,由於您在條件語句中調用它,因此必須在代碼確定是否進入循環之前對其進行評估。無法預測您是否輸入"quit"。這就是爲什麼它首先等待你的輸入。


來源:https://developer.mozilla.org/en-US/docs/Web/API/Window/prompt

對話框是模態窗口;它們阻止用戶訪問程序界面的其餘部分,直到關閉對話框。出於這個原因,你不應該過度使用任何創建對話框(或模態窗口)的函數。

0

因爲這樣prompt作品:

+0

即使我輸入了某些內容(除「quit」之外),「test」在我輸入「quit」之前也不會被修改。 – Yassine

+1

嗯,在我的Chrome/Ubuntu(也是Chrome/Debian)上,每當我輸入一些不是「退出」的東西時,它會寫「測試」,就像你期望的那樣。 – Shomz

相關問題