59

如果选择了下拉列表中的选项,我需要返回 true 或 false。

这是我的代码:

var active = sort.attr('selected') ? return true : return false;

我收到一个错误,第一个return是意外的。

为什么?

4

5 回答 5

147

您可以从 javascript 中的三元运算符返回,如下所示:

return sort.attr('selected') ? true : false;
于 2014-04-15T16:56:37.750 回答
53

您不能将 return 语句分配给变量。如果要active分配值trueor false,只需删除returns:

var active = sort.attr('selected') ? true : false;

或者更好:

var active = sort.prop('selected');

因为.prop总是返回trueor false,无论初始标签属性如何。

于 2013-10-17T23:48:50.097 回答
9

为什么不只是这个?

 return sort.attr('selected');
于 2015-08-06T19:02:56.543 回答
3

从文档:

语法
condition ? expr1 : expr2
参数
条件(或条件)计算结果为真或假的表达式。
expr1, expr2
具有任何类型值的表达式。

你应该注意Expressions with values of any type.,return xxx不是表达式。

来自维基百科:

表达式是一种句法结构,它必须是格式良好的:允许的运算符必须在正确的位置有正确数量的输入,组成这些输入的字符必须是有效的,具有明确的操作顺序等。违反语法规则的符号的格式不正确并且不是有效的数学表达式。

因此,在您的情况下,您可以使用:

return sort.attr('selected') ? true : false
于 2018-04-19T08:11:44.297 回答
2

只是对您的代码的评论:

> sort.attr('selected')

似乎正在使用 jQuery attr方法,该方法用于尝试并再次猜测您想要什么并返回属性或属性。我认为在最近的版本中它总是返回属性。

无论如何,selected属性的存在仅意味着该项目(选项元素?)是默认选择的选项,并不意味着它是当前选择的选项。为此,您需要 selected属性(jQuery prop方法)。并且由于selected属性是布尔值:

> sort.attr('selected') ? true : return false;

可以简单地是:

 sort.prop('selected');

或者没有 jQuery:

 optionElement.selected;
于 2013-10-18T00:48:49.987 回答