![](/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.