【发布时间】:2012-09-05 15:00:18
【问题描述】:
我使用下面的 if 语句来比较表中同一列中的 2 行。我多次使用相同的代码块对不同的列执行相同的计算。
基本上,我希望有一个箭头显示一行和下一行之间的值移动,以及值落入的阈值。因此,例如,在我下面的代码中,任何高于 15 的值都应该是一个红色箭头,如果之前的值较低,那么箭头应该指向上方。我稍后在代码中使用从另一个位置调用的图像来渲染箭头,因此 if 语句只为我提供了相应箭头的字符串。
正如我上面所说,我多次使用相同的代码块。奇怪的是,输出对某些变量有效,而对其他变量无效;即使它是替换了变量名的完全相同的代码!它给我的错误是有时没有明显的原因。
我的条件是不是太多了?有没有更有效的方法来做我想做的事情?
任何帮助将不胜感激!
谢谢, 卡尔
var Arrow = " ";
if(KPI[0] > KPI[1] && KPI[0] >= 15)
{
Arrow = "redarrowup.png";
}
else if(KPI[0] < KPI[1] && KPI[0] >= 15)
{
Arrow = "redarrowdown.png";
}
else if(KPI[0] = KPI[1] && KPI[0] >= 15)
{
Arrow = "redarrowflat.png";
}
else if(KPI[0] > KPI[1] && KPI[0] >= 10 && KPI[0] < 15)
{
Arrow = "yellowarrowup.png";
}
else if(KPI[0] < KPI[1] && KPI[0] >= 10 && KPI[0] < 15)
{
Arrow = "yellowarrowdown.png";
}
else if(KPI[0] = KPI[1] && KPI[0] >= 10 && KPI[0] < 15)
{
Arrow = "yellowarrowflat.png";
}
else if(KPI[0] > KPI[1] && KPI[0] < 10)
{
Arrow = "greenarrowup.png";
}
else if(KPI[0] < KPI[1] && KPI[0] < 10)
{
Arrow = "greenarrowdown.png";
}
else
{
Arrow = "greenarrowflat.png";
}
【问题讨论】:
-
当您说“KPI[0] = KPI[1]”时,您真的是指“KPI[0] == KPI[1]”甚至“KPI[0] === KPI” [1]'?
-
您可以尝试使用类似参数的嵌套。它不一定会更有效,但它可以更容易阅读/弄清楚流程。
-
许多人提出了同样的建议,将“=”替换为“==”,这解决了我的问题,所以谢谢大家!也感谢所有提供更高效、更整洁、更清洁的解决方案的人;我将努力将这些解决方案用于未来的项目:)
标签: javascript if-statement multiple-conditions