2011-05-08 63 views
0

我在我的jquery插件中寫了這篇文章,然後面對一個奇怪的問題。有條件的總是評估好像是真

此jQuery代碼中的條件語句是否正確?

if(info = "enabled"){ 
    $("#mod"+mod_id+" > img.status").attr("src","images/active.gif"); 
}else if(info = "disabled"){ 
    $("#mod"+mod_id+" > img.status").attr("src","images/inactive.gif"); 
}else{ 
    $("#waiting"+mod_id).delay(2000).html(\'<img src="images/error.png" />\'+data); 
} 

問題是,它只返回啓用的值,並不能處理「無效」值

+1

在你的if語句中獲得單個'='作爲比較運算符'=='。您正在使用賦值運算符。你只能得到一個案例,因爲賦值'info =「啓用了」'將始終爲'true'。 – 2011-05-08 16:59:29

回答

3

這是分配

的jsfiddle

http://jsfiddle.net/mbbjh/

if(info = "enabled"){ //wrong 

這是比較

if(info == "enabled"){ 

嘗試微調此外,如果有未來

任何空格
if($.trim(info).toLowerCase()=="enabled") { 
+0

我測試了這個==,但不遵循這個語句,它返回else()語句中的值。雖然它說價值是例如「啓用」 – 2011-05-08 17:03:43

+0

@mac,你比較的情況下,他們都是相同的情況不像啓用和啓用? – kobe 2011-05-08 17:05:12

+0

檢查此jsfiddle示例http://jsfiddle.net/mbbjh/ – kobe 2011-05-08 17:06:53

0

==,不=

這麼簡單........ ..

1

您必須使用==(等於)或===(身份)來比較表達式而不是=

我建議使用===這可以防止類型轉換,如果值和表達式類型都相同,則返回true。

+0

我應該提到我知道正確的版本==,但是當我使用運算符時,它會返回else()值。 – 2011-05-08 17:05:20

+0

notes ='enabled'始終轉換爲true,因此您將無法使用任何其他語句。當你使用正確的語法時,檢查註釋的值是否等於你正在比較的值。(alert(notes)) – Headshota 2011-05-08 17:08:40

+0

我很困惑,它返回不等於...它不可能是正確的..啓用應該等於「啓用」 – 2011-05-08 17:17:17