![](/img/trans.png)
[英]While loop crashing browser when requesting data from API with javascript
[英]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.