Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 而循环不';不要停在js里_Javascript_While Loop - Fatal编程技术网

Javascript 而循环不';不要停在js里

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

我想使用while函数只打印从我选择的数字开始的10个数字

但while循环并没有停止循环

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++;
      }
};