I have some code that’ll allow me to open up a random website from a list of websites but I’d like to open each one up in a new tab, how do I do this?
Information you may need
the code
<html> <button onclick="randomLink();OpenInNewTab();">Click here to go somewhere else! </button> <script type="text/javascript"> var randomLink = function () { // first create an array of links var links = [ "bbc.com", "google.com", "youtube.com", "facebook.com" ]; // then work out the maximum random number size // by counting the number of links in the array var max = (links.length) // now generate a random number var randomNumber = Math.floor(Math.random()*max); // use that random number to retrieve a link from the array var link = links[randomNumber]; // change the location of the window object window.location = "http://" + link; // Opens a new tab. function OpenInNewTab(url) { var win = window.open(url, '_blank'); win.focus(); } } </script> </html>
I tried doing the action in question at two different points and hope you’re input can help to correct this.
Location 1
<button onclick="randomLink();OpenInNewTab();">Click here to go somewhere else!
Location 2
// Opens a new tab. function OpenInNewTab(url) { var win = window.open(url, '_blank'); win.focus();
The following web address is what the code currently looks like and does.
*EDIT : The only changes I made are the websites.They’re much more on the live demo.
Advertisement
Answer
The code you wrote is wrong, since you change the address of the current window (via the line window.location=...
, and other issues… but here:
Working example fiddle
Very similar, and works.
Code
HTML
<button onclick="openStuff();">Click here to go somewhere else!</button>
JS
// the used links var links = [ "bbc.com", "google.com", "youtube.com", "facebook.com"]; openStuff = function () { // get a random number between 0 and the number of links var randIdx = Math.random() * links.length; // round it, so it can be used as array index randIdx = parseInt(randIdx, 10); // construct the link to be opened var link = 'http://' + links[randIdx]; // open it in a new window / tab (depends on browser setting) window.open(link); };