单数字和双数字的数字问题

时间:2015-08-07 04:50:34

标签: javascript jquery

我遇到了一些问题。目前,我有一个显示方程结果的输入框。如果数字介于“-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是等式的不同字段。

3 个答案:

答案 0 :(得分:3)

您正在将字符串与字符串进行比较,字符串按比例而不是按值进行比较。因此,您需要将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";
}

答案 1 :(得分:1)

您正在尝试将值与字符串类型变量进行比较。您不应该使用数字数据类型的引号。使用数字比较时,您应该使用parseInt:

if (parseInt(document.calcForm.resist.value) < -26 || parseInt(document.calcForm.resist.value) > -65) {
        document.calcForm.resist.style.color = "red";
   }

答案 2 :(得分:0)

这是因为document.calcForm.resist.value正在发生 被视为字符串/文本,因为你向它添加“+”和+“dBm”

document.calcForm.resist.value = "+" + Math.floor(tb* 100)/100 + " dBm";

这就是为什么“-3”&gt; “-26”和“-3”&lt; “-65”。

其他同样如此。

将字符串比较视为:“ - 1”&gt; “-10”&gt; “-11”

而数字:-1&lt; -10&lt; -11

此外,您应该从以下数字中删除引号:

if (document.calcForm.resist.value < "-26" || document.calcForm.resist.value > "-65")

以避免将字符串调用为比较。