为了账号安全,请及时绑定邮箱和手机立即绑定

怎么判断输入的是不是数字?

怎么判断输入的是不是数字?不是数字能报错

正在回答

4 回答

typeof(那个输入的东西);

0 回复 有任何疑惑可以回复我~
#1

__正正经经先生4337661 提问者

在函数用if中怎么写这个代码?
2016-11-04 回复 有任何疑惑可以回复我~

<!DOCTYPE HTML>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>返回值函数</title>

<script type="text/javascript">

var arr=['as',100,'xx'-6,'100px']




document.write("1.数组中是纯数字的有:")   //100

for(var i=0 ; i<arr.length ;i++)

{

//isNaN()很特别如果你是纯数字会判断为false;其他就为true;

if(isNaN(arr[i])===false)

{ document.write(arr[i]) }

}

document.write("</br>"+"2.数组中不是纯数字的有:") //'as','xx'-6,'100px'

for(var n = 0 ; n < arr.length ;n++)

{

//当 isNaN()判断出 你不是纯数字的同时又属于数字类型的时候(就是含有数字的字符串),输出值为NaN

if(isNaN(arr[n]) === true)

{ document.write(arr[n]+",")  }

}

document.write("</br>"+"3.数组中是纯数字的有:")   //100

for(var p=0 ; p<arr.length ;p++)

{

//parseInt()用于强转为数字类型,比如parseInt('100px')=100 ;parseInt('560ss')=560

if(parseInt(arr[p]) === arr[p])

{ document.write(arr[p]) }

}

//转换条件自己推吧

console.log("parseInt('100px')="+parseInt('100px'))

console.log("parseInt('a')="+parseInt('a'))

console.log("parseInt('10a10')="+parseInt('10a10'))

console.log("parseInt('a10')="+parseInt('a10'))

document.write("</br>"+"4.数组中属于数字类型的有:")//100,'xx'-6

for(var j = 0 ; j < arr.length ;j++)

{

//typeof用于判断字符串类型

if(typeof arr[j] === "number")

{ document.write(arr[j]+",") }

//还搞懂isNaN()就对比一下1,2,4的关系把

}

</script>

</head>

<body>

</body>

</html>


0 回复 有任何疑惑可以回复我~
#1

慕粉3912077

有点多,用谷歌运行来看看吧
2016-11-04 回复 有任何疑惑可以回复我~
#2

__正正经经先生4337661 提问者

谢谢!
2016-11-04 回复 有任何疑惑可以回复我~

var a='a';

a=a*1;

console.log(isNaN(a));//true

var b='1';

b=b*1;

console.log(isNaN(b));//false

比如说一个输入框,你输入了一个东西,然后点击一个button,这个时候判断的输入的是不是数字肯定不能直接判断,因为你输入进去取出来的都是string,这个时候你需要乘以1,获取这个乘以1的值,用isNaN进行判断,如果你输入的不是数字判断结果都是true,输入的是数字判断结果都是false;

0 回复 有任何疑惑可以回复我~
#1

__正正经经先生4337661 提问者

我想追问一下,a如果是形参是不是就不能判断了?之前他们的答案我去试了 function sub(x,y){ if(x instanceof Number){ alert(“是数字”); } } 这个结果是Undefined,这是为什么?
2016-11-04 回复 有任何疑惑可以回复我~
#2

慕粉4259319 回复 __正正经经先生4337661 提问者

a instanceof b是来判断a是不是b的实例,也就是说a和b都是对象,才能使用instanceof,而如果只是传入的是数字的话永远都是false,如果你传入的参数是var n=new Number(0);sub(n,1);这样才是true。其实形参只是一个传输的通道,由方法实现的时候接收传入的参数,所以方法实现的时候形参就变成了实参,其实没有什么太大的区别。
2016-11-04 回复 有任何疑惑可以回复我~
#3

__正正经经先生4337661 提问者 回复 慕粉4259319

之前用typeof()试的时候也是在if(typeof(x)= =“number”)判断卡住的,后来查书用instanceof 还是不行,但书上的例子: var oStringObject= new String("hello world"); alert(oStringObject instanceof String); 输出的是true; 我就很懵逼了,就是在if()这得不出结果。 function sub(x,y){ if(typeof(x)= =Number){ alert(“是数字”); } } var sub(2,3);
2016-11-04 回复 有任何疑惑可以回复我~
#4

慕粉4259319 回复 __正正经经先生4337661 提问者

因为它是new出来的,通过new出来的都是对象属性,如果你直接写一个var oString="hello world";那么用instanceof的话出来也是false,因为像这种直接写的类型一般都是基本数据类型,所以不能用instanceof,你用typeof弹new出来的变量会发现出来的是object,所以不是对象类型都不要使用instanceof。
2016-11-04 回复 有任何疑惑可以回复我~
#5

__正正经经先生4337661 提问者 回复 慕粉4259319

哦哦,明白了
2016-11-04 回复 有任何疑惑可以回复我~
查看2条回复

if(isNaN(otext.value) === true)    

   文本.innerHTML="输入的不是数字"    


0 回复 有任何疑惑可以回复我~
#1

慕粉3912077

也可以用typeof判断字符是什么类型,比如 alert(typeof a == "string") -------------> true 或者alert(typeof a) ------------> string ;isNaN()是判断属于数字类型但又不完全是的那种数字类型,可以理解成类是半人半妖的血统。。。。。。。。。。。比如 alert(isNaN(100px) ) -------------> true alert(isNaN(100) ) -------------> false
2016-11-04 回复 有任何疑惑可以回复我~
#2

__正正经经先生4337661 提问者

你这个理解起来有点复杂,我看得有点晕,能不能举个例子呢?
2016-11-04 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

怎么判断输入的是不是数字?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信