问题描述
我有这个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或其他一些小数。 任何想法为什么? 我如何解决它? 谢谢。
1楼
Madness
6
已采纳
2015-07-26 02:03:39
要确保num是一个整数,而不必定义所有可能性,请使用:
if (num % 1 == 0)
2楼
Ted
2
2015-07-26 02:02:23
你应该做
if (num == 1 || num == 2 || num == 3 || num == 4 || num == 5)
错误 - 否则它会将2与2进行比较并且表示对于最后4个'if'参数它是正确的。
CORRECTO - JS中的任何数字都被认为是真的。
3楼
Leo
2
2015-07-26 04:12:21
为什么:
num==1 || 2 || 3 || 4|| 5
等于:
(num==1) || 2 || 3 || 4|| 5
所以如果num是"1" (总是一个字符串类型),表达式返回true ,否则返回2 (也是一个真值),最后你的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
4楼
FlokiTheFisherman
0
2015-07-26 03:40:47
您必须编辑“If”循环:
if (num == 1 || num == 2 || num == 3 || num == 4 || num == 5)