【问题标题】:For loop with if statement will not run more than once javascript带有if语句的for循环不会运行多次javascript
【发布时间】:2017-01-24 15:51:12
【问题描述】:

我正在尝试打印数组中的奇数和偶数,但由于某种原因,我的循环在仅打印一个数字后退出(正在打印“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变成了一个字符串。

标签: javascript if-statement for-loop


【解决方案1】:

您正在为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>

【讨论】:

  • 非常感谢 - 我花了几个小时试图找出我做错了什么!
【解决方案2】:

您的+= 放错地方了。您不是添加到 text 变量,而是将字符串值分配给 i。改成这个,就可以了。

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

【讨论】:

    【解决方案3】:

    首先,你正在重新分配循环变量 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;
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 2017-07-31
      相关资源
      最近更新 更多