2016-06-10 140 views
0

我正在嘗試創建一個腳本,該腳本允許我顯示將用戶重定向到四個站點中選定的隨機URL的超鏈接。到目前爲止,我已經爲網站創建了一個數組,並且嘗試生成隨機url。爲了我的目的,輸出(「點擊去一個隨機站點」)不是一個按鈕,而是一個簡單的(可點擊的)字符串。通過Javascript/HTML生成隨機鏈接

運行代碼時,我得到一個參考錯誤「未定義鏈接(在第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>

+0

爲什麼openSite()函數裏面還有openSite()函數? –

+0

這可能是我使用不同的方法讓代碼工作的一個副產品 –

回答

2
<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> 
+1

對我來說,ManoDestra的答案奏效了,而這個並沒有! –

+1

@KatinkaHesselink我認爲你是對的。我的答案可能無法正常工作。 Manodestra的答案照原樣。 –

0

下面是代碼:

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/

2

這裏有一個簡單的方法來做到這一點。

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