2017-06-11 11 views
0

twitter機能への投稿をしようとするとundefinedが表示されます。 quote_text変数はグローバルであり、従ってquoteTwitter関数によってアクセス可能なはずですか?グローバル変数にアクセスする

$(document).ready(function() { 
    loadJSON(); 
    getQuote(); 
    console.log(quote_text); 
}); 

// Declare variables 
var json_obj; 
var num = 0; 
var quote_text = ""; 

// Display a quote - this method is not perfect since the random number will repeat itself and it appears as if no new quote is delivered 
function getQuote(callback) { 
    var html = ""; 
    num = randNum(); 
    quote_text = json_obj[num].quote; 

    html += "<strong> " + quote_text + " </strong>"; 

    $("#quote").html(html); 
    $("#author").html(json_obj[num].author); 
}; 

// Post the current quote on twitter 
function quoteTwitter(quote_text){ 
    var tweet = quote_text; 
    window.open('https://twitter.com/home?status=' +encodeURIComponent(tweet),"_blank"); 
} 
+0

「quoteTwitter」はどこにありますか? – trincot

+3

ブラウザの開発者ツールを使用します:ブレークポイントを設定し、コードをステップ実行して変数を検査します。 –

+0

私はhrefでhtmlのアンカータグでそれを呼び出します。 – thermobeelearns

答えて

2

同じ名前の代わりに、グローバル変数のそれを使用しようとしている関数内だからあなたの関数定義は、パラメータとしてquote_textが含まれています。関数を呼び出すときに関数に何も渡していないと思われるので、定義されていません。これに

function quoteTwitter(quote_text){ 

function quoteTwitter(){ 

を...しかし、おそらく正しい値を渡すために長期的に良くなると思い

あなたは、これを変更することで、この問題を解決することができますグローバル変数に依存するのではなく、可能な場合はパラメータ。

関連する問題