为什么第一个条件不起作用?

时间:2017-03-03 22:50:28

标签: jquery api if-statement

好吧所以我想通过API(forismatic.com)得到随机引用,如果它通过tweeter.my问题有140个字母共享,因为我不确定,为什么第一个条件不起作用。

var tweetLink = "https://twitter.com/intent/tweet?text=";
var quoteUrl = "http://api.forismatic.com/api/1.0/?method=getQuote&key=867576&format=jsonp&lang=en&jsonp=?";
function getQuote() {
$.getJSON(quoteUrl, createTweet);
}
function createTweet(input) {
if (tweetText.length > 140) {
getQuote();}


var tweetText = "Quote of the day - " + input.quoteText + " Author: " +   input.quoteAuthor;}
     if (!input.quoteAuthor.length) {
    input.quoteAuthor = "Unknown author";

 else {
var tweet = tweetLink + encodeURIComponent(tweetText);
$('.quote').text(input.quoteText);
$('.author').text("Author: " + input.quoteAuthor);
$('.tweet').attr('href', tweet);
}
}
  $(document).ready(function() {
getQuote();
$('.trigger').click(function() {
    getQuote();
})
});

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,你说这个条件"不起作用"?:

if (tweetText.length > 140) {

当然,您的浏览器调试控制台会告诉您这里的问题。这里tweetText变量未定义。因为您在之后定义它,所以使用它:

if (tweetText.length > 140) {
    getQuote();
}
var tweetText = "Quote of the day - " + input.quoteText + " Author: " + input.quoteAuthor; 

简单地说,在拥有值之前,您无法使用值。当然,你的意思是将这两个操作放在相反的顺序中:

var tweetText = "Quote of the day - " + input.quoteText + " Author: " + input.quoteAuthor;
if (tweetText.length > 140) {
    getQuote();
}

首先定义变量,然后使用变量。

请注意,可能是您代码中的其他错误,但除非您更明智地构建代码,否则很难通过查看 。请记住,代码并不仅仅意味着执行,它也意味着可以被人类读取和理解。那包括你。您可以阅读和理解的代码更容易调试。