2016-09-21 129 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()'一次,每当用户打开页面时,它也会带来不同的报价。 –