2010-07-20 48 views
0

我有一個複選框與價值「新」或「現有」公司的情侶。JavaScript if - 否快捷方式不起作用?

$("input[name=company]:checked").val() 

使用jQuery顯示選中框的值。
現在,如果我做的:

if ($("input[name=company]:checked").val() == "new") { 
    is_new_company = true; 
} else { 
    is_new_company = false; 
} 
alert(is_new_company); 

我得到正確的布爾值。
做快捷:

($("input[name=company]:checked").val() == "new") ? is_new_company = true : is_new_company = false; 

我什麼也沒得到。爲什麼會這樣?

+3

你不應該只是做'is_new_company =($(「輸入[name = company]:checked「)。val()==」new「)'?我甚至不確定當你把任務放在這樣的三元操作中會發生什麼情況 – 2010-07-20 06:43:23

+1

現在有很多人寫過'boolean-expression?真:假 - 這有什麼意義? – 2010-07-20 06:46:03

+0

不知道爲什麼會發生這種情況,但正如其他人所建議的那樣,不要使用三元運算符來編寫語句:而只是使用它來編寫表達式(即賦值運算符'='的語句右側的部分)。在諸如Java這樣的其他語言中,根本不會編譯。 – FK82 2010-07-20 07:02:42

回答

4

爲什麼你不只是做:

is_new_company = $("input[name=company]:checked").val() == "new"; 

我想你的Firebug的控制檯上的代碼,它工作正常:(input[name=q]是在搜索框本頁右上角)

var x; 
$("input[name=q]").val() == "asd" ? x = "t r u e" : x = "f a l s e"; 
console.log(x);//worked as expected 

順便說一句,我認爲以下更可讀(我只將其用於非布爾值,當然):

x = $("input[name=q]").val() == "asd" ? "t r u e" : "f a l s e"; 
0

嘗試

is_new_company = ($("input[name=company]:checked").val() == "new") ? true : false; 
+2

-1:'條件? true:false'是多餘的,應該只是由'condition'取代。 – Amber 2010-07-20 06:51:19

+0

@Amber Downvotes看起來有點苛刻;答案是正確的,只是(略)不必要的冗長 – 2010-07-20 07:49:37

+0

@Michael:我不介意刪除downvotes,如果有人回覆評論,指出他們修復冗餘,但是如果它是冗餘代碼,我會首先倒下,因爲冗餘代碼很差碼。 – Amber 2010-07-20 16:01:04

0
is_new_company = ($("input[name='company']:checked").val() == "new") ? true : false; 
+1

-1:'條件? true:false'是多餘的,應該只是由'condition'取代。 – Amber 2010-07-20 06:51:57

+0

@Amber,ans是正確的。測試結束後請立即停止使用。 – Sadat 2010-07-20 08:24:29

+1

我知道它正確運行,這不是downvoting的原因。 downvote是由於不好的風格。 – Amber 2010-07-20 15:58:05