2011-09-29 48 views
0

我正在嘗試編寫一個迭代解決用戶輸入問題的程序。這就像使用二分查找來猜測用戶的0到100之間的數字。Javascript訂單執行提示和document.writeln語句

所以程序吐出了一些東西(以 document.writeln語句的形式);然後詢問用戶一個新的輸入(使用prompt());做了一些更搗鼓和吐出,直到最終終止。這是我的問題:

程序不會執行document.writeln語句,直到它執行完所有 提示語句。其餘的陳述按正確的順序執行。

我真的很感謝一些幫助理解爲什麼會發生這種情況。我知道Javascript有一個特殊的執行順序概念,可能它是這樣做的,因爲它喜歡先執行prompt(),因爲它是警報,但我仍然不明白。

謝謝

回答

0

這是因爲緩存。在執行引擎處於空閒狀態或強制迴流之前,不會將更改刷新到文檔中。在document.writeln()的每個實例之後放置一個document.documentElement&&(document.documentElement.offsetWidth||document.documentElement.currentStyle)以解決此問題。請參閱http://jsfiddle.net/minitech/reWXq/

+0

這有第一次刷新後關閉文件的效果... – user971728

+0

@ user971728:看到我的編輯,'document.flush()'實際上並不是一種方法。糟糕:P – Ryan

0

您可能想嘗試將一些文本附加到<div>的內容上。 document.writeln有一些遺留問題,如果您繼續沿着這條路走下去,您可能會遇到這些問題。