大于不给出正确的读数

时间:2016-12-10 19:41:39

标签: javascript html

如果输入的数字小于96,则应出现0,应出现96到192之间的3,如果输入等于或大于192,则输出应为6。 但是在我的代码中由于某种原因并非如此,输入0和1返回0,输入2-99返回6,100到191返回0,192和以上返回6

这是代码

var number = document.getElementById("width").value;
var text;


if (number >= "192") {
    text = "6";


} else if (number >= "96") {
    text = "3";

} else {
    text = "0";
}
document.getElementById("smallquantity").innerHTML = text;

5 个答案:

答案 0 :(得分:0)

尝试比较字符串

var letter = document.getElementById("width").value;
var text;

// If the letter is "c"
if (letter.localeCompare("c")) {
    text = "6";

// If the letter is "e"
} else if (letter.localeCompare("e")) {
    text = "3";

// If the letter is anything else
} else {
    text = "0";
}
document.getElementById("smallquantity").innerHTML = text;

答案 1 :(得分:0)

我认为你已经尝试了错误的逻辑方法。 试试以下

if(letter < "96")
   text = "0";
else if (letter < "192")
   text = "3";
else
   text = "6";

我认为它会提供您正在寻找的输出。 但我强烈建议您解析输入,然后在带有数字比较的if块中使用它。

var letter = parseInt(document.getElementById("width").value);
if(letter < 96)
   text = "0";
else if (letter < 192)
   text = "3";
else
   text = "6";

答案 2 :(得分:0)

字符串以字面方式进行比较,这意味着在按字母顺序列出内容时基于字符的排序;比较碰巧包含数字的两个字符串与比较两个数字不同。

"2" > "1294"因为角色2位于角色1之后。

只需更改逻辑即可使用数字。首先,解析HTML元素的内容。下面的10表示在解释数字时使用基数10(很重要,因为像"012"这样的东西被解释为八进制数,而不是十进制数):

var letter = parseInt(document.getElementById("width").value, 10);

...然后将您的比较更改为使用数字,而不是字符串:

if (letter >= 192)

答案 3 :(得分:0)

要将其与ASCII值进行比较,首先需要convert it to ASCII。你不能马上比较。
同时,字母&#34; c&#34; ASCII值为99,而非192 您应首先转换为ASCII,然后与正确的值(数值,而不是数字作为字符串)进行比较。
你的逻辑也错了 - IF是&#34; c&#34; - &GT; ELSE是&#34; c&#34;或者&#34; e&#34;。你永远不会得到那个&#34; c&#34;在ELSE。

var letter = document.getElementById("width").value.charCodeAt(0);
var text;

// If the letter is "c"
if (letter ==  99) {
    text = "6";

// If the letter "e"
} else if (letter == 101) {
    text = "3";

// If the letter is anything else
} else {
    text = "0";
}
document.getElementById("smallquantity").innerHTML = text;

现在你理解了这个想法。您可以相应地调整IF。

答案 4 :(得分:0)

在从@jacob和@reza那里获得帮助后,这是我提出的代码解决了我的问题。感谢所有帮助我解决这个问题的人!

    var number = parseInt(document.getElementById("width").value, 10);
    var text;
     if (number < "96") {
    text = parseFloat(0);

    } else if (number < "192") {
    text = parseFloat(3);

    } else {
    text = parseFloat(6);
    }
    document.getElementById("largequantity").innerHTML = parseFloat(text) * parseFloat(quantity);