2014-09-29 23 views
0

例如:傳遞確認對話框結果變量在javascript

var x = confirm("Ok or Cancel?"); 
alert(x); 

在上面的例子中,點擊了確定之後或取消返回值將被傳遞到的「x」。接收到該值後,接下來將執行alert(x);

我的問題是確認如何將值傳遞給'x'?顯然,確認框將等待用戶在執行警報(x)之前單擊「確定」或「取消」。

+0

'confirm'是一個阻塞函數,它會停止代碼執行,直到您響應提示。然後它返回一個值,與每個返回值的函數一樣,然後可以將其存儲到一個變量中。 – Amadan 2014-09-29 08:14:56

+0

'confirm' **暫停**整個線程,並在您單擊ok或cancel後返回一個值。 – 2014-09-29 08:16:17

回答

0

你的假設是正確的,調用confirm()是一個阻塞操作。

截至mdn說:

對話框是模態窗口 - 他們阻止用戶訪問該程序界面的其餘部分,直到對話框關閉。出於這個原因,你不應該過度使用任何創建對話框(或模態窗口)的函數。無論如何,避免使用對話框進行確認有很好的理由。

+0

這就是我的目標:**他們阻止用戶訪問程序界面的其餘部分,直到對話框關閉**。 是否有可能在javascript中創建模態函數? – Gene 2014-09-30 11:40:55

+0

絕對,谷歌的'modalbox JavaScript',你會發現他們噸 – epoch 2014-09-30 11:48:48

+0

我發現他們噸噸,不幸他們只是阻止程序界面。我也想知道如何阻止線程執行。 無論如何感謝您的建議。 – Gene 2014-10-01 03:02:26

0

confirm是一個接受參數並返回布爾值的函數。

所以一個簡單的函數工作方式類似:

function trueIfMessage(message) 
{ 
    return (message != '' && message != null); 
} 

這是一個函數,參數,返回一個布爾值。

confirm增加了更多的功能,因爲它向用戶顯示一個窗口並允許用戶做出選擇。這種副作用會阻塞主線程,直到用戶關閉窗口。

+0

其實我想模仿確認對話框的阻止。在你給出的答案中,不會阻塞下一個代碼。 – Gene 2014-09-30 11:36:55

+0

它阻止執行與確認一樣。除非另有說明,否則所有功能都會阻止不同之處在於確認等待用戶輸入,正如我在答案結尾處所述。 – 2014-09-30 12:31:45

+0

對不起。你的權利。我需要的是在執行下一個代碼之前等待用戶輸入。 截至目前,我正在使用回調。 – Gene 2014-10-01 02:47:48