为什么执行后页面刷新不了,不能刷新下重新执行?

为什么执行后页面刷新不了,不能刷新下重新执行?

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>当点击“录入”按钮时,循环弹出输入框,使用户输入信息,直到用户输入-1,停止弹出输入框,然后将用户输入的信息输出在页面上。</title>
</head>
<body>
    <input type="button" value="录入">
    <script>
 var Load=document.getElementsByTagName("input")[0];
 var msgs=[],msg="";
 Load.onclick=load;
 function load() {
            while(true){
                msg=prompt("请输入员工信息,输入-1退出");
 if (msg=='-1'){
                    for (var i=0;i<msgs.length;i++){
                       document.write("输入的第"+(i+1)+"个员工是"+msgs[i]+"<br />");
 }
                    break;
 } else {
                     msgs.push(msg);
 }

            }
        }

    </script>


</body>
</html>


正在回答 回答被采纳积分+1

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

2回答
好帮手慕夭夭 2019-01-03 14:00:31

你好同学 , 结合你的第二条回复 , 同学可能是把刷新和不刷新的情况理解相反了 . 按照以下重新理解一下 :

因为弹窗是点击事件才会执行的 .所以当你刷新后 , 弹窗应该消失 , 再次点击才会出现 .这是正常的刷新情况.

而谷歌、360浏览器当你点按钮弹出弹窗 , 然后再刷新的时候 , 会一直弹如下这个弹窗 ,此时是不能刷新的 . 这个是因为代码中while循环在谷歌、360浏览器解析时 , 一直满足循环条件true , 会阻塞页面刷新 .

http://img1.sycdn.imooc.com//climg/5c2da1690001bc0c04530171.jpg

同学说的输入-1本身就不是在刷新页面,而是正常输入内容执行代码 ,自然会跳出循环 . 

而火狐中解析是可以刷新页面的 ,当点击弹出弹窗后 , 刷新弹窗消失的 .相当于回到了你重新打开页面的时候 ,此时需要再次点击才能执行代码 . 这个情况才是正常刷新了页面 ,代码又重头开始执行了 .

.这些情况和浏览器自身机制有关 . 练习的效果实现了 . 代码是ok的 . 祝学习愉快 ,望采纳 .


好帮手慕夭夭 2019-01-03 10:50:41

你好同学 , 这是因为循环导致的 ,当你按刷新的时候 , while死循环 , 阻塞页面刷新 , 所以说页面其实是没有刷新的 . 弹窗一直会弹出的 .

祝学习愉快 ,望采纳 .

  • 提问者 慕九州7567404 #1
    没有一直弹窗啊,页面最后停在最后输出信息那里,我输入-1不是跳出了while循环了吗?况且这个函数是写在点击事件上的 怎么就刷新不了了?不懂
    2019-01-03 11:55:22
  • 提问者 慕九州7567404 #2
    今天用谷歌、360浏览器、火狐浏览器测试了下,在谷歌 360上可以正常运行,火狐浏览器还是不能刷新重新录入,这怎么解释?
    2019-01-03 12:06:31
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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