为什么这个循环没有返回到第一个索引?

时间:2015-02-10 18:06:01

标签: javascript for-loop indexing

我在这里很困惑,当if为真时,它不会回到第一个索引。我不知道为什么我以前做过,但我没有保存在一个安全的地方。现在我花了很多时间寻找解决方案,有人可以帮助我吗?

var digital = document.getElementById("placeDiv").style;

var abc = ["red","blue","green"];

for(var i=0;i<3;i++){
digital.backgroundColor=abc[i];alert(i);if(abc["green"]){i=0};
};

4 个答案:

答案 0 :(得分:1)

试试这个:

 if(abc[i] === "green")

我不知道你打算做什么。但是你的代码将处于无限循环中。

答案 1 :(得分:1)

这样的结果将是一个无限循环,因为当循环到达数组中的第3个对象时,它将从第1个开始。 如果你想要一个无限循环,那么在(true){}

时使用它会更清晰
var digital = document.getElementById("placeDiv").style;

var abc = ["red","blue","green"];

for(var i=0;i<abc.length;i++){
    digital.backgroundColor=abc[i];
    alert(i);
    if(abc[i]=="green"){
         i=0;
    }
}

答案 2 :(得分:1)

不确定你要做什么,但也许你想要的是:

if (abc[i] === "green") {

但请记住,即使在满足此条件时我被重置为0,它也会在循环顶部立即升至1。然后你将处于一个无限循环中,我从1变为2然后再返回。

答案 3 :(得分:1)

您需要切换到while循环。目前,您将最终得到一个循环计数器,在第一次执行后永远不会低于1。您将i设置为0但是当循环结束时它会增加。我使用if-then测试将代码更改为while循环,以增加循环计数器或将其设置为零。它现在对我来说很好。

    var i=0;
    while (i<3){
            digital.backgroundColor = abc[i];
            //alert(i);
            if(abc[i] === "green"){
              i=0
            } else {
                i++;
            }
         }