簡體   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