2016-09-21 86 views
0

我已經編碼了一個隨機報價生成器,並希望能夠分享報價給推特。 http://codepen.io/nachamuami/pen/KrRYpY 通過嘗試發送函數來調用整個函數,而不是代碼生成的報價。任何指針將不勝感激。鳴叫報價

function getQuote(){ 
var arrayLength = quoteArray.length; //number of entries in array 
var randomValue = Math.floor(Math.random()*arrayLength); 
var newQuoteY = quoteArray[randomValue].yiddish; 
var newQuoteE = quoteArray[randomValue].translation; 

$('#inYiddish').html(newQuoteY); 
$('#inEnglish').html(newQuoteE);}; 



$('#quote-button').click(function(){ 
      getQuote();   
}); 



$('#twitter-button').click(function(){ 
      window.open("https://twitter.com/intent/tweet?text=" + getQuote); 
     }); 
}); 

回答

1

聲明

window.open("https://twitter.com/intent/tweet?text=" + getQuote); 

實際上是附加功能本身的URI。 JavaScript通過採用字符串形式進行補償,在這種情況下,或多或少是您爲getQuote所做的確切聲明,儘管它們是字符串。

您可能意味着以下幾點:

window.open("https://twitter.com/intent/tweet?text=" + getQuote()); 

在這種情況下,你仍然會遇到一個錯誤,因爲getQuote沒有返回值,因此,鳴叫會簡單地說undefined。要糾正這個問題,你需要返回一個字符串getQuote。或者,您可以在getQuote之外聲明newQuoteYnewQuoteE,但仍由其設置。這將允許類似以下的事情,其中​​當前顯示的意第緒語報價是推文。

window.open("https://twitter.com/intent/tweet?text=" + newQuoteY); 
+0

謝謝,我最終定義了函數外的newQuotes。但現在我遇到了另一個問題,如果我嘗試推介第一個佔位符報價它出現未定義。 –

+0

@AharonHyman您必須將'newQuoteY'的原始值設置爲初始報價,或者您可以獲取'$('#inYiddish')。text()'的值。我個人喜歡前者,以避免額外DOM查詢的不必要性,以便在大多數情況下獲得JavaScript之前由JavaScript設置的東西。 –

+0

@AharonHyman一個更好的方法仍然是在頁面加載中運行'getQuote()'一次,每當用戶打開頁面時,它也會帶來不同的報價。 –