问题描述
我有一些数字问题。 当前,我有一个输入框,用于显示方程式的结果。 如果数字在“ -25”和“ -55”之间,则显示绿色。 如果数字是从“ -55”到“ -65”,则为橙色。 这些范围之外的其他任何东西都是红色。 我遇到的问题是数字“ -3”,“-4”和“ -5”都在该范围之外,但它们显示为绿色。 “ -6”显示为橙色。 这些数字应该是红色的。 我是否在代码中缺少可以解决此问题的内容?
谢谢!
var tb = (num1 * num2) + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10 + num11 + num13 + num12 + num14;
if (tb > 0) {
document.calcForm.resist.value = "+" + Math.floor(tb* 100)/100 + " dBm";
}
else
{
document.calcForm.resist.value = Math.floor(tb* 100)/100 + " dBm";
}
document.calcForm.resist.style.color = "green";
if (document.calcForm.resist.value < "-26" || document.calcForm.resist.value > "-65") {
document.calcForm.resist.style.color = "red";
}
else { if (document.calcForm.resist.value > "-55") {
document.calcForm.resist.style.color = "orange";
}}
num1-num14是方程式的不同字段。
1楼
Inkbug
3
已采纳
2015-08-07 04:57:20
您正在将字符串与字符串进行比较,后者按字母顺序进行比较,而不是按值进行比较。
因此,您需要将document.calcForm.resist.value转换为数字– parseInt(resist.value) (请参见代码):
var tb = (num1 * num2) + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10 + num11 + num13 + num12 + num14;
var resist = document.calcForm.resist;
if (tb > 0) {
resist.value = "+" + Math.floor(tb* 100)/100 + " dBm";
}
else
{
resist.value = Math.floor(tb* 100)/100 + " dBm";
}
resist.style.color = "green";
if (parseInt(resist.value) < -26 ||
parseInt(resist.value) > -65) {
resist.style.color = "red";
}
else if (parseInt(resist.value) > -55) {
resist.style.color = "orange";
}
2楼
dpanshu
1
2015-08-07 05:01:21
您正在尝试将值与字符串类型的变量进行比较。 您不应该在数字数据类型中使用引号。在使用数字比较时,您应该使用parseInt:
if (parseInt(document.calcForm.resist.value) < -26 || parseInt(document.calcForm.resist.value) > -65) {
document.calcForm.resist.style.color = "red";
}
3楼
Manos Theodorou
0
2015-08-07 05:01:02
发生这种情况是由于document.calcForm.resist.value被视为字符串/文本,因为您在其中添加了“ +”和“ + dBm”
document.calcForm.resist.value = "+" + Math.floor(tb* 100)/100 + " dBm";
这就是为什么“ -3”>“ -26”和“ -3” <“ -65”的原因。
其余的也一样。
认为字符串比较为:“-1”>“-10”>“-11”
而数值:-1 <-10 <-11
另外,您应该从以下位置删除数字中的引号:
if (document.calcForm.resist.value < "-26" || document.calcForm.resist.value > "-65")
为了避免调用字符串进行比较。