【问题标题】:Why doesn't this loop return to the first index?为什么这个循环不返回第一个索引?
【发布时间】:2015-02-10 18:06:00
【问题描述】:

我在这里感到困惑,当 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};
};

【问题讨论】:

  • if(abc["green"]) 什么时候是真的?
  • 有更好的方法来制作无限循环

标签: javascript for-loop indexing


【解决方案1】:

试试这个:

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

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

【讨论】:

  • 我想删除警报(i),我知道这是可能的......我会想办法的,因为你们有点刷新我的记忆。
【解决方案2】:

这样做的结果将是一个无限循环,因为当循环到达数组中的第三个对象时,它将从第一个对象重新开始。 如果你想要一个无限循环,使用 while(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;
    }
}

【讨论】:

  • 我可以删除警报(i)吗?
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

    您需要切换到 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++;
                }
             }    
    

    【讨论】:

    • 如何删除警报?到目前为止,只有警报。
    • 对不起,我不明白你的问题。如果您告诉我们更多有关您尝试使用此脚本做什么的信息,我们可能会为您提供更多帮助。如果您只是不想显示警报,则可以简单地删除。警报(一);代码行。或者,您可以注释掉该行。
    • 我在上面的答案中注释掉了警告行。如果您使用该代码,警报将不再显示。
    • 游戏和数字互动视频 (DIV) 的无限多边形算法。
    • 在浏览器上进行高清显示的屏幕像素同步。
    猜你喜欢
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2014-04-01
    • 2023-03-28
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多