0

我对一些代码有点困惑,我不确定为什么它不起作用。

这是一个If函数...

if (calorie_total<100)
{
$("#awards_info").html('bad');
}
else if (200>calorie_total>100)
{
$("#awards_info").html('okay');
}
else if (400>calorie_total>300)
{
$("#awards_info").html('good');
}
else (calorie_total>400);
{
$("#awards_info").html('great');
}

Bascailly 它正在查看总卡路里,然后告诉你你做得有多好。

但出于某种原因,即使卡路里小于 0,它也总是说“很棒”?

任何想法都会很棒?

谢谢

4

6 回答 6

5

JavaScript 关系运算符不能按照您的代码所暗示的方式工作。你必须做两个单独的比较&&

else if (200 > calorie_total && calorie_total > 100)

在这种特殊情况下,您实际上并不需要这样做。如果你做到了else,那么这意味着“calorie_total”不能小于或等于100。事实上,如果“calorie_total”正好是100,这段代码不会做任何事情!

于 2013-10-28T15:07:37.373 回答
4

当你说类似

if (200>calorie_total>100)

比方说calorie_total是150,基本上是这样评价的

(200 > 150) > 100

这是

true > 100

返回

false

所以所有条件都失败了,else 部分总是被执行。要得到你真正想要的,你需要像这样改变条件

if (calorie_total < 200 && calorie_total > 100)

而你的else部分不应该有任何条件(calorie_total>400);

在此处阅读有关强制规则的更多信息http://webreflection.blogspot.in/2010/10/javascript-coercion-demystified.html

console.log(true == 1)
console.log(false == 0)

输出

true
true

现在我们知道true== 1 和false== 0,我们可以评估其余的条件。

于 2013-10-28T15:08:51.770 回答
1

您需要将最后一个else语句变成一个else if语句。

    else if (calorie.total>400) {

            /* Code */

    }

通过使其成为else,它应该在没有其他条件的情况下运行。

于 2013-10-28T15:10:23.527 回答
1

你不能200>calorie_total>100在 JavaScript 中做类似的事情(至少它不像你想象的那样工作)。您之前的检查暗示calorie_total > 100,因此您可以省略它,从而导致else if (calorie_total < 200)。如果您真的想仔细检查,则必须使用逻辑 AND 运算符 - &&。例如if (200 > calorie_total && calorie_total >100)

于 2013-10-28T15:08:19.460 回答
1

200>calorie_total>100并且400>calorie_total>300不会做你想要达到的目标。JavaScript 将读取第一个>并比较这些值。if如果我们将您的陈述分解为200>calorie_total>100,我们最终会得到:

200 > calorie_total > 100 /* Evaluates to... */
(200 > calorie_total) > 100 /* Evaluates to... */
(false) > 100 /* Or... */
(true) > 100

这两个都将评估为false.

您需要做的是使用&&运算符:

if (200 > calorie_total && calorie_total > 100) { ... }

如果我们将其分解,我们最终会得到:

200 > calorie_total && calorie_total > 100 /* Evaluates to ... */
true and true /* Or... */
true and false /* Or... */
false

如果两个值计算为true,则您的if语句将为true。如果其中一个计算结果为false,您的if语句将是false

于 2013-10-28T15:09:04.257 回答
1

我觉得最后几行很奇怪,你可能想改变

else (calorie_total>400);
{
$("#awards_info").html('great');
}

经过

else if (calorie_total>400)
{
    $("#awards_info").html('great');
}
于 2013-10-28T15:09:32.413 回答