我遇到了一些问题。目前,我有一个显示方程结果的输入框。如果数字介于“-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是等式的不同字段。
答案 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")
以避免将字符串调用为比较。