繁体   English   中英

带有if语句的for循环不会多次运行javascript

[英]For loop with if statement will not run more than once javascript

我试图从数组中打印奇数和偶数,但由于某种原因,我的循环在仅打印一个数字后退出(“0 是偶数”正在打印)。 我不明白为什么它也不遍历 1、2、3、4、5 和 6?

<!DOCTYPE html>
<html>
<body>

<p> Click the button to print odd and even numbers </p>

<button onclick="loopNum()">Click me</button>

<p id="loopNumbers"></p>

<script> 
function loopNum(){

var numbers = [1, 2, 3, 4, 5, 6]
var text;

for(var i = 0;i < numbers.length;i++){
        if (i % 2 ==0){
            text = (i += " is even");
            }
        else if (i % 2 !=0){
            text = (i += "is odd");
        }   
        document.getElementById("loopNumbers").innerHTML=text;
    }

}

</script>

</body>
</html>

您正在为i分配一个字符串

i += " is even"

i += "is odd"

这打破了循环。

您可以将此代码用于偶数部分

text += i + " is even" + '<br>';

然后你需要用''初始化text

text = '';

你可以省略第二个 if 子句。

毕竟,输出应该向下移动一步,因为它不应该在每个循环中进行输出,这会覆盖最后的内容。

 function loopNum() { var numbers = [1, 2, 3, 4, 5, 6], text = ''; for (var i = 0; i < numbers.length; i++) { if (i % 2 == 0) { text += i + " is even<br>"; } else { text += i + " is odd<br>"; } } document.getElementById("loopNumbers").innerHTML = text; }
 <p>Click the button to print odd and even numbers</p> <button onclick="loopNum()">Click me</button> <p id="loopNumbers"></p>

你的+=放错了地方。 您不是添加到文本变量,而是将字符串值分配给 i。 改变这个,它会起作用。

if (i % 2 ==0){
   text += (i + " is even");
}
else if (i % 2 !=0){
   text += (i + " is odd");
}   

首先,您要重新分配循环变量 i,这是分配后的字符串:

i += " some string "

您不能使用字符串变量进行循环。

您遇到的第二个问题是您重新分配了 p 元素的值,因此最终您只会看到其中一个输出。 要获取所有输出,您可以例如附加到 p 元素:

function loopNum(){
var numbers = [1, 2, 3, 4, 5, 6]
var text;
for(var i = 0;i < numbers.length;i++){
  if (i % 2 ==0){
    text = i + " is even";
  }
  else if (i % 2 !=0){
    text = i + "is odd";
  }   
  document.getElementById("loopNumbers").innerHTML += text;
}

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM