loop popup confusion

Can someone tell me how to make my URLs properly loop into the window.open I created? I’m wondering if the loop is the right answer to make each URL rotate based on my setInterval? If yes, I was wondering if the loop needs to be under 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);

Answers:

Answer

Just change

urls[ rotate ],

to

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

The index is incremented each iteration and % urls.length (% is used for getting the remainder after division, hence it ensures the result never grows beyond the array size). You can try it here (remember to allow popups).

Answer

You are not updating the value of rotate..

Try doing this

<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>
Answer

While the other answers are technically correct, here's a simplied version if you're just starting out with js, all that % can be confusing.

// 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);

Now, your function is called goRandom() while this will goSequence() (or goNext()), so you can change this without any form of loop to pick a random url (though your loop var is called 'rotate' so maybe not what you wanted).

// 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);

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us Javascript

©2020 All rights reserved.