Javascript 而循环不';不要停在js里
我想使用while函数只打印从我选择的数字开始的10个数字 但while循环并没有停止循环Javascript 而循环不';不要停在js里,javascript,while-loop,Javascript,While Loop,我想使用while函数只打印从我选择的数字开始的10个数字 但while循环并没有停止循环 id=prompt('Write any number'); 功能编号(a){ var i=a; var j=a+10; 而(i
id=prompt('Write any number');
功能编号(a){
var i=a;
var j=a+10;
而(i 编号(id)代码>尝试使用for循环:
for(var i=0; i<10; i++){ doSomething}
for(var i=0;i试试这个:
var id = parseInt(prompt('Write any number.'), 10);
在您的示例中,id将是字符串类型,比较将不会像您预期的那样工作。当您在提示中输入一个数字时,它将作为字符串提供。由于您尚未将其转换为数字,因此行var j=a+10
实际上将两个值连接起来,就像它们是字符串一样
例如,如果在提示中输入“5”,则var j=“5”+10
返回“510”
。只有当您将while循环中的两个变量与i
进行比较时,它才会被解释为一个数字,并将从5循环到510
将字符串转换为数字的最简单方法是使用parseInt(value)
提示符函数返回一个字符串。
问题是您正在将一个字符串
与数字10连接起来
如果将变量写入文档,则可以看到问题:
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);
您需要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);
id=prompt('Write any number');
功能编号(a){
var i=parseInt(a);var j=parseInt(a)+10;
而(i文档。写(i+“
”);
在控制台中,我得到了正确的结果。只需添加换行符即可在视口中查看整个结果您可以尝试使用此for loop函数:
id=prompt('Write any number');
功能编号(a){
for(设i=a;i编号(id);
使用函数编号(a){
时,变量a
作为字符串传递
这导致i
和j
被设置为字符串
例如:
假设您将2
作为输入传递,您的变量将设置为a=“2”
、i=“2”
和j=“210”
。因此,根据您的条件,它将从2
开始打印,直到209
您可以将代码更改为将a
解析为数字以获得结果;类似于:
function numbering(a) {
a = parseInt(a); //parse as Int here
var i=a; var j=a+10;
while (i < j)
{
document.write(i);
i++;
}
};
函数编号(a){
a=parseInt(a);//此处解析为Int
VarI=a;VarJ=a+10;
而(i
替换为。然后输入0值,结果是0到9只需添加:a=+a;
。一元运算符(+
)将变量a
强制转换为一个数字,因为提示实际上返回strings
,所以在字符串上使用+将导致串接。很抱歉,我的问题是错误的。不是从0,而是从提示时选择的数字。
document.write(i +"<br>");
function numbering(a) {
a = parseInt(a); //parse as Int here
var i=a; var j=a+10;
while (i < j)
{
document.write(i);
i++;
}
};