问题
I am trying to create a script that allows me to display a hyperlink that redirects the user to a random url selected out of four sites. So far I have created an array for the sites, and a function that attempts to generate the random url. For my purpose it is important for the output ("Click to go to a random site") is not a button, but a simple (clickable) string.
When running the code I get a reference error "link is not defined (on line 18)". I thought that I had defined link in the code with var link = 'http://' + links[randIdx];
, so I am not entirely sure why I am getting this error and how to fix it.
Anyone that could take a look at my code to see where I have made a mistake and how I could fix it?
<a href="javascript:openSite()">Click to go to a random site</a>
<script>
function openSite() {
var links = [
"google.com",
"youtube.com",
"reddit.com",
"apple.com"]
openSite = 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];
};
return link;
document.getElementById("link").innerHTML = openSite();
}
</script>
回答1:
<a href="javascript:openSite()">Click to go to a random site</a>
<script>
var links = [
"google.com",
"youtube.com",
"reddit.com",
"apple.com"]
var openSite = 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];
return link;
};
</script>
回答2:
Here's a simple way to do it.
<script>
var sites = [
'http://www.google.com',
'http://www.stackoverflow.com',
'http://www.example.com',
'http://www.youtube.com'
];
function randomSite() {
var i = parseInt(Math.random() * sites.length);
location.href = sites[i];
}
</script>
<a href="#" onclick="randomSite();">Random</a>
回答3:
Here is the code:
var links = [
"google.com",
"youtube.com",
"reddit.com",
"apple.com"]
function openSite() {
// 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];
return link;
};
document.getElementById("link").innerHTML = openSite();
Here is the fiddle: https://jsfiddle.net/gerardofurtado/90vycqyy/1/
来源:https://stackoverflow.com/questions/37751759/generating-a-random-link-through-javascript-html