2011-08-26 73 views
0

這是我見過的最奇怪的行爲之一。以下是JS代碼片段:即使條件不成立,條件爲假的情況下也會執行Javascript代碼

else if ($("*[id$=ddlDefaultPurpose]").val() == 2) { 
    if ($("*[id$=ddlJobCategory]").val() == -1) { 
     ShowMessageStrip(errorJobCategory); 
     formIsValid = false; 
    } 
    //else if (!TryParseSalaryOffered($("*[id$=txtCurrentSalary]").val())) { 
    // ShowMessageStrip(errorCurrentSalary); 
    // formIsValid = false; 
    //} 
} 

現在代碼執行時,$("*[id$=ddlJobCategory]").val()不等於-1。這在Firebug中可以清楚地看到。現在發生的情況是,在評估條件之後,代碼應該出來,但是它會轉到行formIsValid = false。它跳過了ShowMessageStrip(errorJobCategory)

爲什麼會發生這種情況?

+0

你確定它去那條線嗎?你是否在Firebug中驗證過:設置一個斷點並看到它被觸發?也許,在運行代碼之前'formIsValid'的值是'false'? –

+0

你有這個小提琴嗎? – naveen

+0

是的,我在Firebug中進行了調試,在那裏我看到代碼遵循我描述的執行路徑。 – shashi

回答

0

說明顯而易見的是,這聽起來像你的代碼沒有按照你的想法運行。

您確定您沒有=而不是==嗎?你確定你的括號全部匹配嗎(在這裏沒有顯示代碼)?嘗試檢查jslint。

formIsValid聲明在哪裏?它看起來像代碼中的全局代碼。

另外,你確定ShowMessageStrip()沒有被調用 - 你有沒有嘗試把一個console.log(並沒有別的)在函數中?

相關問題