2016-12-28 108 views
0

首先,這裏是一個small project我在每次按下New Fact按鈕時會拋出一個新事實。源代碼可用here。然後我做了一個推特按鈕來發送推文的報價。在JavaScript中訪問變量從一個功能到另一個功能

正如你可以在main.js文件中看到的,有一個變量叫做引號,它是一個由40個引號組成的數組(在下面的代碼中被剪斷)。

// var quotes defined above, an array of 40 quotes 

$(".quoter").click(function() { 

     // To generate a random number 
     function randomRange(myMin, myMax) { 
      return Math.floor(Math.random() * (myMax - myMin + 1) + myMin); 
     } 

     i = randomRange(0, 40); 
     //Using the random number generated above to fetch a quote 
     $(".lead").text(quotes[i]); 

     var uriLink = encodeURIComponent(quotes[i]); 

     $(".tweeter").click(function(){ 
      window.open("https://twitter.com/intent/tweet?text="+uriLink+, "_blank"); 
     }); 
    }); 

每當用戶點擊分享Tweet按鈕,它開闢了每個i多個Twitter標籤。我只想爲當前報價打開選項卡。我試圖保持兩個功能分開,而不是嵌套,但然後quotes[i]變得無法訪問導致undefined

+0

具體是什麼問題,什麼是你的問題? – charlietfl

+0

@charlietfl我只想要打開一個tweet標籤,其中包含當前事實,只要用戶按下tweet按鈕。 – Hyperbola

回答

1

既然你存儲你是URI編碼的.lead元素中的文本,這裏有一個方法可以單獨的功能:

$(".quoter").click(function() { 
    function randomRange(myMin, myMax) { 
    return Math.floor(Math.random() * (myMax - myMin + 1) + myMin); 
    } 

    i = randomRange(0, 40); 

    $(".lead").text(quotes[i]); 
}); 

$(".tweeter").click(function() { 
    var uriLink = encodeURIComponent($(".lead").text()); 
    window.open("https://twitter.com/intent/tweet?text=" + uriLink + , "_blank"); 
}); 
+0

我也試過,但那會給我一個報價,最初的一個報價。它不會更新,因爲我迭代。 – Hyperbola

+0

@Hyperbola你確定嗎?它在這裏寫的方式是,每次單擊「.tweeter」時它將獲得'.lead'元素的當前文本。 –

+1

謝謝,它現在正在工作。我曾嘗試過同樣的事情,但不知道爲什麼它沒有成功。再次感謝! – Hyperbola