【问题标题】:loop popup confusion循环弹出混乱
【发布时间】:2016-03-11 01:55:37
【问题描述】:

谁能告诉我如何让我的网址正确循环到我创建的window.open 中?我想知道循环是否是根据我的setInterval 旋转每个 URL 的正确答案?如果是,我想知道循环是否需要在var rotate = []{for (var i = 0; i < urls.length; i++)}; 之下。

var urls = ["http://www.espn.com","http://www.disney.com","http://www.codingforums.com"];
var rotate = 0;
function goRandom()
{
    var newwin = window.open(
        urls[ rotate ],
        "POPUP",
        "height=400,width=600,scrollbars=yes"
    );
}
var loop = setInterval(goRandom, 5000);

【问题讨论】:

  • 你没有用rotate 做任何事情......你只在你的弹出窗口中获得 espn 吗?
  • 这将在你的所有标签上显示 espn,你到底想要什么?
  • @JaromandaX 是的,它只给我 espn。我试图让所有的 url 与 setInterval 一起旋转。
  • @SaranshKataria 我只是想拥有这 3 个网址的 SetInterval。

标签: javascript loops


【解决方案1】:

只是改变

urls[ rotate ],

urls[ (rotate++) % urls.length ],

索引每次迭代都会递增,% urls.length(% 用于获取除法后的余数,因此它确保结果永远不会超过数组大小)。你可以try it here(记得允许弹窗)。

【讨论】:

  • 它是modulo operator。它通常用于数组旋转算法中,以防止使用超出数组大小的索引。
【解决方案2】:

虽然其他答案在技术上是正确的,但如果您刚开始使用 js,这里有一个简化版本,% 的所有内容可能会令人困惑。

// setup urls
var urls = ["http://www.espn.com","http://www.disney.com","http://www.codingforums.com"];

// rotate is a global variable so can be accessed anywhere
var rotate = 0;

function goRandom( )
{
    var newwin = window.open(
                                     urls[ rotate ],
                                     "POPUP",
                                     "height=400,width=600,scrollbars=yes"                          );

    // move to the next array position
    rotate++;

    // Check if at the end of the array and move back to the beginning
    if (rotate >= urls.length)
        rotate = 0;
}


// Keep going indefinitely
setInterval(goRandom, 5000);

现在,您的函数被称为 goRandom() 而这将是 goSequence()(或 goNext()),因此您可以在没有任何形式的循环的情况下更改它来选择一个随机 url(尽管您的循环变量被称为“旋转”所以也许不是你想要的)。

// setup urls (global so accessed from anywhere)
var urls = ["http://www.espn.com","http://www.disney.com","http://www.codingforums.com"];

function goRandom( )
{
    // get a random url
    var rotate = Math.floor(Math.random() * (urls.length - 1));

    var newwin = window.open(
                                     urls[ rotate ],
                                     "POPUP",
                                     "height=400,width=600,scrollbars=yes"                          );
}


// Keep going indefinitely
setInterval(goRandom, 5000);

【讨论】:

    【解决方案3】:

    你没有更新rotate的值..

    尝试这样做

    <script type="text/javascript">
    var urls = ["http://www.espn.com","http://www.disney.com","http://www.codingforums.com"];
    var rotate = 0;
    
    function goRandom( )
    {
        rotate= (rotate+1) % urls.length;
        var newwin = window.open(
    
                                         urls[ rotate ],
                                         "POPUP",
                                         "height=400,width=600,scrollbars=yes"                          );
    }
        var loop= setInterval(goRandom, 5000);
    </script>
    

    【讨论】:

      猜你喜欢
      • 2019-04-24
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 2015-02-10
      • 1970-01-01
      • 1970-01-01
      • 2014-05-25
      相关资源
      最近更新 更多