我使用以下代码计算总共5个不同输入的平均值。
var total = p1 + p2 + p3 + p4 + p5;
var priority = total / 5;
我试图根据变量优先级的值在文本框中显示“高”,“中”和“低”:
我已经使用过这段代码,但似乎没有什么是正确的,请帮助:
if (5 > priority > 4)
{
$("#textbox").val('High');
} else if (4 > priority > 2.5)
{
$("#textbox").val('Medium');
} else if (2.5 > priority > 0)
{
$("#textbox").val('Low');
}
答案 0 :(得分:2)
您可以使用.val(function)
条件运算符;如果priority
大于4
将元素value
设置为"High"
;如果priority
大于2.5
设置值为"Medium"
; else将值设置为"Low"
$("#textbox").val(_, function(val) {
return priority > 4 ? "High" : priority > 2.5 ? "Medium" : "Low"
});
答案 1 :(得分:2)
if (5 > priority > 4)
不是测试priority
和5
之间4
是否正确的正确方法。表达式被解析为5 > (priority > 4)
。 (priority > 4)
评估为true
或false
,然后与1
进行比较时转换为0
或5
。因此,这将是5 > 1
或5 > 0
,并且它们都是真的。
正确的方法是:
if (5 > priority && priority > 4)
但是真的没有必要测试priority
是否介于值之间。每个else if
仅在前一个if
失败时才会运行。因此,如果您到达第二个if
,您已经排除了priority > 4
的情况,因此您不需要再次测试它。此外,当priority
完全等于其中一个边界值时,您的所有情况都不会成功;在priority == 4
时,priority > 4
和priority < 4
都会将其排除在外。因此,只需检查范围的一端,另一端将自行处理。
所以代码应该是:
if (priority > 4) {
$("#textbox").val("High");
} else if (priority > 2.5) {
$("#textbox").val("Medium");
} else {
$("#textbox").val("Low");
}