请老师检查下哪里出问题了?

请老师检查下哪里出问题了?

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>手机号码验证</title>
</head>
<body>
    <script>
var phone=prompt("请输入手机号码");
if(phone.length!=11){
alert("必须11位数");
}
else if(typeof phone!=Number){
alert("必须是纯数字");
}
else{
alert("号码输入正确");
}
</script>
</body>
</html>


正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,判断用户输入内容是否为纯数字的方式存在问题:因为phone变量中保存的数据,是用户通过对话框输入的内容,为字符串类型,所以使用typeof判断的结果始终为string(即使用户输入的全部是数字,使用typeof判断的结果也是string)。

因此,建议使用Number()方法来实现,参考代码如下

http://img1.sycdn.imooc.com//climg/6113a9890960d6cd06170370.jpg

祝学习愉快!

  • localhost999 提问者 #1

    老师根据您的提示修改后,如果输入的数字包含小数点,也是正确的,怎么避免这个问题呢

    2021-08-11 18:53:45
  • 好帮手慕然然 回复 提问者 localhost999 #2

    同学你好,JS提供了一个Number.isInteger()方法,用来判断给定的参数是否为整数,可以避免数字包含小数点的问题,参考代码如下

    http://img1.sycdn.imooc.com//climg/61148ad409d8232405660402.jpg

    另外,再给同学补充一点,使用typeof判断数据类型时,typeof会返回6种数据格式:object 、undefined、string、number、boolean、function,而且是以字符串的形式返回。

    所以,使用等号或不等号进行比较时,应与这六种返回值进行比较,例如:typeof phone == "number"

    祝学习愉快!

    2021-08-12 10:53:35
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师