通过 Javascript/HTML 生成随机链接

Posted

技术标签:

【中文标题】通过 Javascript/HTML 生成随机链接【英文标题】:Generating a random link through Javascript/HTML 【发布时间】:2016-10-11 15:06:19 【问题描述】:

我正在尝试创建一个脚本,该脚本允许我显示一个超链接,该超链接将用户重定向到从四个站点中选择的随机 url。到目前为止,我已经为站点创建了一个数组,以及一个尝试生成随机 url 的函数。就我而言,重要的是输出(“单击以转到随机站点”)不是一个按钮,而是一个简单的(可点击的)字符串。

运行代码时出现参考错误“未定义链接(第 18 行)”。我以为我在代码中用var link = 'http://' + links[randIdx]; 定义了链接,所以我不完全确定我为什么会收到这个错误以及如何修复它。

任何人都可以查看我的代码以了解我在哪里犯了错误以及如何修复它?

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

【问题讨论】:

为什么openSite()函数里面又多了一个openSite()函数? 这可能是我使用不同方法使代码工作的副产品 【参考方案1】:

这是一个简单的方法。

<script>
    var sites = [
        'http://www.google.com',
        'http://www.***.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>

【讨论】:

【参考方案2】:

代码如下:

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

这里是小提琴:https://jsfiddle.net/gerardofurtado/90vycqyy/1/

【讨论】:

【参考方案3】:
<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>

【讨论】:

对我来说 ManoDestra 的回答有效,而这个无效! @KatinkaHesselink 我认为你是对的。我的回答可能无法正常工作。 Manodestra 的回答按原样工作。

以上是关于通过 Javascript/HTML 生成随机链接的主要内容,如果未能解决你的问题,请参考以下文章

python怎样生成正太分布的随机数

数据集的获取

我们如何生成一定数量的随机数并将它们相互链接,而无需将数字链接到自身? [复制]

html中随机添加xp_smtp_sendmail空格

是否可以使用 Javascript 在页面刷新时随机生成预先确定的链接颜色和悬停颜色?

使用Python随机生成数据的一些方法