[英]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
作為字符串傳遞。
這導致將i
和j
設置為字符串。
以示例為例:假設您傳遞2
作為輸入,則變量將設置為a="2"
, i="2"
和j="210"
。 因此,根據您的情況,它將從2
到209
開始打印。
你可以改變你的代碼來解析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.