2010-07-20 51 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