当前位置: 代码迷 >> JavaScript >> 一位数字和两位数的数字问题
  详细解决方案

一位数字和两位数的数字问题

热度:85   发布时间:2023-06-05 15:54:48.0

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

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

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

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

发生这种情况是由于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")

为了避免调用字符串进行比较。

  相关解决方案