2017-04-19 70 views
1

我整個下午都在苦苦掙扎,沒有任何幫助,我無法繼續前進。即使條件爲假,代碼也會執行

直指點。

// On document ready 
$(function() { 
    var stop = false; 
    $('#update-cart :input').on('change input', function() { 
     // Here you go 
     stop = true; 
    }); 

    if (stop === false) { 
     // For some(silly) reason It gets executed on input field change 
    } 
}); 

如果我的理解是正確的上面的代碼入手if聲明,除非在輸入字段的某些變化,而這臺新的變量。所以if條件仍然是錯誤的。如果條件不成立,我不明白爲什麼它會被執行。雖然我可能會失蹤或做錯事。

+1

你的'stop = true'在一個事件處理程序中。它只會在你的輸入改變時運行。所以你的代碼是:1 set stop = false,2啓動一個事件處理程序以後運行,3檢查stop是否爲false,這顯然是 –

+1

它每次都會執行,因爲一開始總是false,而你運行if條件....如果你想評估只是改變,然後移動你的if語句 – DaniP

+1

@DaniP謝謝!我需要兩個。 –

回答

5

只有代碼處理程序在事件發生時運行(並重新運行)。

這裏是你的代碼在運行命令:

  1. 創建stop變量,並將其設置爲false

  2. 掛鉤changeinput處理程序。

  3. 檢查if (stop === false),並且,因爲這是真的,請執行if的塊中的代碼。

  4. 之後,只要值發生變化,請將stop設置爲true。這對第3步中運行的代碼沒有任何影響。

+0

我還將這個過程記錄在控制檯中,這是命令。關於如何停止執行'if'語句的任何指針或解決方法? –

+1

@'if'語句不會持續運行,它運行** once **,當它所在的函數被jQuery'ready'調用時。如果您希望在不同的時間調用它,請將代碼移到那裏。如果你需要它在'ready'發射*和*時都運行,每次有變化時,我建議將它放在一個函數中,並從兩個地方調用該函數。 –

相關問題