2010-08-21 83 views

回答

1

這是不可能的。

將函數分成兩部分,運行一部分,並將另一部分分配給按鈕的單擊事件處理程序。

+0

實際上我的要求是爲window.confirm實現燈箱,因爲window.confirm可以暫停函數並返回true或false我想實現相同的 – kumar 2010-08-21 12:35:28

+0

@kumar,它與@David Dorward所描述的幾乎相同,除了不是指定點擊處理程序,而是向對話框添加回調。 – strager 2010-08-21 12:42:32

+0

但我必須從當前的javascript函數返回true或false點擊燈箱是或否按鈕。 – kumar 2010-08-21 12:49:11

1

您可以使用彈出框。

alert("Pausing to get Coffee"); 
+0

感謝您的回覆,但我需要實現自定義的window.cofirm我正在顯示一個燈箱,同時該函數不會暫停執行,我想設置一個隱藏的變量在html中爲true或false,點擊yes或者燈箱上沒有,並且在函數的恢復中,我將讀取變量並執行必要的操作。 – kumar 2010-08-21 12:41:59

1

就像大衛說的那樣,不可能停止Javascript中的函數執行(當然,現在還不行)。一個解決辦法是這樣的:

** EDITED **後你添加了一些精度你想要做

// pass the reference of the button id to the function 
function showConfirm(message, callback) { 
    // 1. check if the lightbox is not already created, if not create it 
    // 2. keep a reference to your key elements, for example, your buttons 
    var btnOk = document.getElementById('btnOk'); // ...for example 
    var btnCancel = document.getElementById('btnCancel'); // ...for example 

    // 3. have a 'cleanup' function so you can dismiss your lightbox, unregister 
    //  any events/callbacks, etc. 
    var cleanup = function() { 
     // 6. hide lightbox 
     // 7. remove events/callbacks, etc. 
     btnOk.click = null; // for example 
     btnCancel.click = null; // for example 

     // etc. 
    }; 


    // 4. update your lightbox with the message given in argument 

    // 5. register some events to your buttons... 
    btnOk.click = function() { 
     callback(true); // ok was pressed 
     cleanup(); 
    }; 
    btnCancel.click = function() { 
     callback(false); // cancel was pressed 
     cleanup(); 
    } 

} 

所有您需要記住的是,在Javascript中,一切都應該是異步什麼。如果你的函數應該返回一個值,它應該是一個不需要很長時間執行的函數。只要您閱讀Javascript的「用戶輸入」,您需要需要回調。你可能想看看其他燈箱實現是如何完成的,特別是在像JQuery等框架中。