簡體   English   中英

while循環不會在js中停止

[英]while loop doesn't stop in js

我想與功能一起使用,同時僅打印從我選擇的數字開始的10個數字。

但是while循環不會停止循環。

 id = prompt('Write any number.'); function numbering(a) { var i = a; var j = a + 10; while (i < j) { document.write(i); i++; } }; numbering(id); 

嘗試這個:

var id = parseInt(prompt('Write any number.'), 10);

在您的示例中,id將為字符串類型,並且比較將無法按您期望的那樣進行。

當您使用function numbering(a) { ,變量a作為字符串傳遞。

這導致將ij設置為字符串。

以示例為例:假設您傳遞2作為輸入,則變量將設置為a="2"i="2"j="210" 因此,根據您的情況,它將從2209開始打印。

你可以改變你的代碼來解析a AS號來實現你的結果; 就像是:

function numbering(a) {
    a = parseInt(a);  //parse as Int here
    var i=a; var j=a+10;
    while (i < j) 
      {
         document.write(i);
         i++;
      }
};

嘗試使用for循環:

for(var i=0; i<10; i++){ doSomething}

您可以嘗試使用此for循環功能:

  id=prompt('Write any number.'); function numbering(a) { for (let i = a; i < a + 10; i++){ document.write(i); } }; numbering(id); 

如果要將輸入解析為數字,則可以在編號函數參數調用中添加parseInt(id)

在提示中輸入數字時,該數字將作為字符串提供。 由於尚未將其轉換為數字,因此行var j = a + 10實際上將兩個值視為字符串連接在一起。

例如,如果在提示中輸入“ 5”,則var j = "5" + 10返回"510" 僅當您然后將while循環中的兩個變量與i < j進行比較時,才將其解釋為數字,並從5循環到510。

將字符串轉換為數字的最簡單方法是使用parseInt(value)

提示函數返回一個string 問題是您要用數字10串聯一個string

如果將變量寫入文檔,則可以看到問題:

     id=prompt('Write any number.');
    function numbering(a) {
        var i=a; var j=a+10; 
        document.write(i);
        document.write("<br/>");
        document.write(j);
        document.write("<br/>");
        //while (i < j){
        //  document.write(i);
        //  i++;
        //}
    };

         numbering(id);

這將解決您的問題:

var id=parseInt(prompt('Write any number.'));

您需要parseInt函數,因為從promt獲得的是字符串。 例如5 +10。 對於javascript,它將是510。

     id=prompt('Write any number.');
function numbering(a) {
  var i=parseInt(a); var j=parseInt(a)+10; 
  while (i < j){
    document.write(i);i++;
  }};

             numbering(id);
document.write(i +"<br>");

在控制台中,我得到適當的結果。 只需添加換行符即可在視口中查看整個結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM