我試圖從用戶得到五個輸入。我知道在一個循環中調用函數(如下面的代碼)會崩潰,因爲所有的prompt()函數都會被同時調用。與提示使用循環()
for(var i = 0; i < 5; i++) {
prompt();
}
有什麼解決方案呢?我看到其他片段使用「超時」,並在每次函數調用之間等待一段時間,但是當用戶可以花費盡可能多的時間來輸入提示時,代碼是否仍然有效?
我試圖從用戶得到五個輸入。我知道在一個循環中調用函數(如下面的代碼)會崩潰,因爲所有的prompt()函數都會被同時調用。與提示使用循環()
for(var i = 0; i < 5; i++) {
prompt();
}
有什麼解決方案呢?我看到其他片段使用「超時」,並在每次函數調用之間等待一段時間,但是當用戶可以花費盡可能多的時間來輸入提示時,代碼是否仍然有效?
我知道在一個循環中調用函數(如下面的代碼)會崩潰,因爲所有的
prompt()
都被同時調用。
That't不在這裏,因爲prompt
的情況是阻塞功能,就像alert
。即迭代(或更確切地說是代碼執行)只在提示窗口關閉後繼續。
您可以將所有的值添加到一個數組,像這樣:
var inputs = [];
for(var i = 0; i < 5; i++) {
inputs.push(prompt());
}
console.log(inputs);
這是否是最佳的用戶體驗是不同的問題...
無需超時,則提示符會在其他代碼執行之前等待用戶輸入(確定,取消),這意味着單擊確定後會出現下一個提示。超時只是有用的,這樣人們不會意外按兩下確定連續並看到提示出現。
很好的答案。需要注意的是,如果我在同一個循環中通過5個提示訪問網站,我會盡快關閉瀏覽器。想象一下5個以上的提示讓我頭腦發生崩潰。 –
我試過使用你的代碼並在repl.it中運行它 然而,它在第一次輸入後被掛起並凍結。有什麼我失蹤的? https://repl.it/BK26/1 – feedobesebison
@feedobesebison:可能是repl.it的問題。在這裏工作得很好:http://jsfiddle.net/b3q666y2/1/ –