2017-06-11 17 views
0

Ich bekomme eine undefined, wenn ich die Post zu Twitter-Funktion versuchen. Sollte die Variable quote_text global sein und daher über die quoteTwitter-Funktion zugänglich sein? Cant Zugriff auf eine globale Variable

$(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

Wo nennst du 'quoteTwitter'? – trincot

+3

Verwenden Sie die Entwicklertools Ihres Browsers: Setzen Sie Haltepunkte, gehen Sie durch den Code und prüfen Sie die Variablen. –

+0

Ich rufe es auf dem Anker-Tag im HTML mit href. – thermobeelearns

Antwort

2

Ihre Funktionsdefinition enthält quote_text als Parameter, so innerhalb der Funktion, dass es versucht, statt mit dem gleichen Namen der globalen Variablen zu verwenden. Sie geben vermutlich nichts an die Funktion weiter, wenn Sie sie aufrufen, daher erscheint sie als undefiniert.

Sie können dieses Problem beheben, indem diese:

function quoteTwitter(quote_text){ 

dazu:

function quoteTwitter(){ 

... aber es würde wahrscheinlich auf lange Sicht besser sein, den richtigen Wert zu übergeben in als ein Parameter, wenn möglich, anstatt von globalen Variablen abhängig zu sein.

Verwandte Themen