为什么javascript接受小数作为整数

时间:2015-07-26 02:00:33

标签: javascript html input integer

我有这个HTML:

<input type='number' id='length' step='0.1' min='0'; max='5'>Length

和这个Javascript

num=document.getElementById('length').value;
if(num==1 || 2 || 3 || 4|| 5){
num='0'+num;
}

我的问题是这样的:虽然我只希望括号内的代码执行,如果输入的数字是整数,它也会在检测到0.8或其他小数时激活。任何想法为什么?我如何解决它?感谢。

4 个答案:

答案 0 :(得分:6)

要确保ifstream brightness_file(BRIGHTNESS_FILE); 是一个整数,而不必定义所有可能性,请使用:

num

答案 1 :(得分:2)

为什么:

num==1 || 2 || 3 || 4|| 5

等于:

(num==1) || 2 || 3 || 4|| 5

因此如果num"1"(始终为字符串类型),则表达式返回true,否则为2(也是 truthy 值),最终你的if语句总是成功。

如何解决:

// implicitly converts the string type into number type before comparison
// returns true if it is an integer-like string
num == Math.floor(num) 

所以你可以这样做:

if (num == Math.floor(num) && num > 0 && num < 6) {
    // an integer-like string that meets the requirement [1, 5]
}

但请记住,num现在仍然是 string 类型。如果您想要number,请执行:

num = +num

答案 2 :(得分:1)

你应该做

@Override
public void actionPerformed(ActionEvent e)
{
    submitAction(); // doesn't look like ActionEvent needs to be a parameter.
}

错误 - 否则它会将2与2进行比较,并表示对于最后的4&#39;如果&#39;参数。

CORRECTO - JS中的任何数字都被认为是真的。

答案 3 :(得分:0)

你必须编辑&#34;如果&#34;循环:

if (num == 1 || num == 2 || num == 3 || num == 4 || num == 5)