4-7练习帮忙检查,为什么输入框取消输入后就会进入死循环,那要怎么改进?

4-7练习帮忙检查,为什么输入框取消输入后就会进入死循环,那要怎么改进?

<meta charset="UTF-8">

    <title>Math.random()</title>

</head>

<body>

<script>

  //补充代码

  var num=Math.floor(Math.random()*9+1);

  var input;

  while(num!=input){

    input=prompt("请输入你猜的数字");

    if(num==input){

      alert("恭喜你猜对了");

  }else if(num>input){

      alert("输入的数字小了");

  }else{

      alert("输入的数字大了");

  }

}

    

</script>

</body>

</html>


正在回答

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

3回答

可以添加一句判断,判断是否为空,如果是点了取消的话肯定获取到的input就是null,之后的判断就不让执行,参考下面的代码:

var num=Math.floor(Math.random()*9+1);
  var input;
  if(prompt("请输入你猜的数字")==null){
    alert("error!");
  }else{
      while(num!=input){
    input=prompt("请输入你猜的数字");
        console.log(input);

    if(num==input){
      alert("恭喜你猜对了");
      }else if(num>input){
          alert("输入的数字小了");
      }else{
          alert("输入的数字大了");
      }
    }
  }

祝学习愉快!

  • 慕工程1453923 提问者 #1
    非常感谢!
    2017-10-30 19:50:40
  • 慕工程1453923 提问者 #2
    我试了下老师您的代码,如果不输入的话,还是会一直死循环,控制台一直输出null哎,那怎么办?
    2017-10-30 20:03:25
卡布琦诺 2017-10-31 15:56:19

外层使用while来循环,里面首先使用if(){}else{}来进行判断。当input != "" && input != null执行猜数字的环节,否则else弹出error提示,即:

<script type="text/javascript">
    var num=Math.floor(Math.random()*9+1);
    var input;
    while (num != input) {
        input = prompt("请输入你猜的数字2");
        if (input != "" && input != null) {
            if (num == input) {
                alert("恭喜你猜对了");
            } else if (num > input) {
                alert("输入的数字小了");
            } else {
                alert("输入的数字大了");
            }
        } else {
            alert("error");
        }
    }
</script>

希望可以帮到你~

怎么都被占用了呢 2017-10-31 11:17:08

那就试试这样,输入空的时候判断空字符串,这是不是你想要的效果

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Document</title>

</head>

<body>

    <script type="text/javascript">

        var num=Math.floor(Math.random()*9+1);

  var input=prompt("请输入你猜的数字");

  if(input==""){

    alert("error!");

  }else{

      while(num!=input){

         if(input==""){

         alert("error!");

         break;

      }else if(num>input){

          alert("输入的数字小了");

          input=prompt("请输入你猜的数字");

      }else if(num<input){

          alert("输入的数字大了");

          input=prompt("请输入你猜的数字");

      }

    }

  }

   if(num==input){

      alert("恭喜你猜对了");

      }

    </script>

</body>

</html>


  • 提问者 慕工程1453923 #1
    嗯嗯,谢谢老师。但是我想问为什么var num=Math.floor(Math.random()*9+1); var input; if(prompt("请输入你猜的数字")==null){ alert("error!"); }else{ while(num!=input){ input=prompt("请输入你猜的数字"); console.log(input); if(num==input){ alert("恭喜你猜对了"); }else if(num>input){ alert("输入的数字小了"); }else{ alert("输入的数字大了"); } } }这个不输入为死循环的呢,输入为空不是弹出error的吗?
    2017-10-31 11:29:20
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
前端小白入门系列课程
  • 参与学习           人
  • 提交作业       11218    份
  • 解答问题       36713    个

从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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