【问题标题】:Generating a random link through Javascript/HTML通过 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()函数?
  • 这可能是我使用不同方法使代码工作的副产品

标签: javascript html random reference href


【解决方案1】:

这是一个简单的方法。

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

【讨论】:

    【解决方案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 的回答按原样工作。
      猜你喜欢
      • 1970-01-01
      • 2018-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多