如果声明不起作用?

时间:2013-10-28 15:05:18

标签: javascript html if-statement jscript

我对某些代码感到困惑但我不确定为什么它不起作用。

这是一个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,它总是说“很棒”?

任何想法都会很棒?

谢谢

6 个答案:

答案 0 :(得分:5)

JavaScript关系运算符不能像您的代码所暗示的那样工作。您必须进行两个与&&

相关的单独比较
else if (200 > calorie_total && calorie_total > 100)

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

答案 1 :(得分:4)

当你说

之类的话
if (200>calorie_total>100)

假设calorie_total是150,它基本上就像这样评估

(200 > 150) > 100

true > 100

返回

false

因此所有条件都失败了,而其他部分总是被执行。要获得你真正想要的东西,你需要改变这样的条件

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,我们可以评估其余条件。

答案 2 :(得分:1)

你不能在JavaScript中做200>calorie_total>100之类的事情(至少它不像你想象的那样工作)。您之前的检查意味着calorie_total > 100,因此您可以省略它,从而产生else if (calorie_total < 200)。如果你真的想要仔细检查,你将不得不使用逻辑AND运算符 - &&。例如if (200 > calorie_total && calorie_total >100)

答案 3 :(得分:1)

200>calorie_total>100400>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

答案 4 :(得分:1)

我认为最后一行很奇怪,你可能想要改变

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

通过

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

答案 5 :(得分:1)

您需要将最后一个else语句转换为else if语句。

    else if (calorie.total>400) {

            /* Code */

    }

通过将其设为else,如果没有其他条件可以运行,它应该正常运行。