2016-11-17 93 views
0

我想從昨天開始我的js代碼,但它仍然無法正常工作。所以我有一個選擇列表,當我更改選定的選項時,它會調用一個調用DWR函數的onchange事件。如何在JavaScript中暫停事件?

的問題是DWR功能需要一段時間,並重置我的選擇選項(而不是選擇的選擇的一個的第一個元素),我試圖設置於前值,但是當我添加一個while循環它才起作用。

var valeurTypeUo = document.getElementById('selectElement').value; 
// DWR function called by this function 
forme.getOptions(params); 
// console.log(document.getElementById('typesUoChoix').value) is empty String 
while (document.getElementById('typesUoChoix').value != valeurTypeUo) 
    document.getElementById('typesUoChoix').value = valeurTypeUo; 

這是我的代碼,它的工作原理,但如果我想停止腳本,總會有警報。有什麼方法可以在指令時替換這個。

預先感謝您。

+1

也許這可能會有所幫助:http://stackoverflow.com/questions/951021/what-is-the-javascript-version-of-sleep –

+1

你可以顯示'forme.getOptions(params)'函數嗎? DWR是否有可以傳播的回調? –

+1

您可以延遲執行一段代碼,但延遲前的同一級別的其他代碼仍然會執行 - 這是因爲據我所知,「setTimeout」不是異步的。 – Crowes

回答

2

您可以使用setInterval它可以清除,而不是while

您的代碼可以像:

var stopCheking = false; 
    var checkingInterval; // interval holder 

    var valeurTypeUo = document.getElementById('selectElement').value; 

    // DWR function called by this function 
    forme.getOptions(params); 

    // console.log(document.getElementById('typesUoChoix').value) is empty String 

    checkingInterval= setInterval(function() { 
    if(stopCheking) clearInterval(checkingInterval); 
    }, 2); 

當你要停止在這種情況下,事件(interval),您將stopCheking標誌true

+1

它可以很好地工作,thanx – Chinovski