【问题标题】:Tweeting a quote推特报价
【发布时间】:2016-09-22 06:14:32
【问题描述】:

我编写了一个随机报价生成器,并希望能够将报价分享到 twitter。 http://codepen.io/nachamuami/pen/KrRYpY 通过尝试发布该函数,它会将整个函数调用到 twitter,而不是代码生成的引用。任何指针将不胜感激。

 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);
        });
});

【问题讨论】:

    标签: javascript jquery twitter


    【解决方案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 之外声明newQuoteY 和newQuoteE,但仍由它设置。这将允许类似以下内容,其中当前显示的意第绪语引文是推特。

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

    【讨论】:

    • 谢谢,我最终在函数之外定义了 newQuotes。但现在我遇到了另一个问题,如果我尝试在推特上发布第一个占位符引用,它会出现未定义。
    • @AharonHyman 您必须将newQuoteY 的原始值设置为初始报价,或者您可以获取$('#inYiddish').text() 的值。我个人会选择前者,以避免不必要的额外 DOM 查询来获得在大多数情况下之前由 JavaScript 设置的东西。
    • @AharonHyman 一个更简洁的方法仍然是在页面加载时运行一次getQuote(),这也将获得额外的好处,即每次用户打开页面时都会使用不同的引用。
    • 太好了,谢谢!我还为英文报价添加了第二个推文按钮
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 2019-08-16
    • 2016-03-18
    • 2016-03-28
    • 2020-11-12
    相关资源
    最近更新 更多