繁体   English   中英

如何阻止while循环使浏览器崩溃?

[英]How to stop this while loop from crashing the browser?

我必须为这个项目使用while循环,我知道for循环可能会更容易,但是这是必须完成的方式。

该功能需要根据用户要查看的职务数获取用户输入(1-5),然后调用数组编号(0-4),因此如果他们说3个职务,则数组项0,1,2需要打印。 到目前为止,这就是我所拥有的,并且它不断使浏览器崩溃,不确定如何控制循环并确保它打印出所有数组值而不是仅输出一个。

<script type="text/javascript">
       function jobduties() {
       var x = document.getElementById("input").value;
       var y = x-1;
       var duties = ["Sales", "Customer Service", "Management", "Driving", "Cleaning"]; 
       while (x>=0) {
       var y
       document.getElementById("print").innerHTML=duties[y];
       break;
       }       
     }
</script>

<form>

单击以查看该职位的工作职责。

这里的工作职责

在while循环内,递增x的值

您的x始终相同,因此条件始终满足,因此循环不会中断

1-您的x永远不会减少,因此您将永远陷入循环。
2-这段时间内您不需要本地y。

 function jobduties() {
   var x = document.getElementById("input").value;
   var y = 0;
   var duties = ["Sales", "Customer Service", "Management", "Driving", "Cleaning"]; 
   while (x > y) {

   document.getElementById("print").innerHTML=duties[y];
   y++;

   }       
 }

首先,要避免在循环中重新创建y,因为已经创建了它。 其次,您的while循环是无限的,因为x总是大于0或小于0,因此,您的while循环将运行并变为无限,或者将被跳过。 要解决while循环崩溃的问题,请尝试增加x。

假设i = x = 3(用户输入),我们将通过循环中的每一步减去1来迭代直到达到0。 每一步之后,我们将打印i,这将给我们3,2,1

//Your code with input goes here
for(var i=x; i=0;i--){
document.Write(i);
}

这是刚刚为您测试的另一种解决方案:

 function jobduties() { document.getElementById("print").innerHTML = "" var x = parseInt(document.getElementById("input").value); var y = 0 var duties = ["Sales", "Customer Service", "Management", "Driving", "Cleaning"]; while (y < x) { document.getElementById("print").innerHTML = document.getElementById("print").innerHTML + "<br>" + duties[y]; y = y + 1; } } 
 Number of duties: <input type="Number" id="input"> <button onclick="jobduties()">Click me</button> <p id="print"></p> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM