2016-09-21 3 views
0

Ich habe einen zufälligen Quote Generator codiert und möchte das Zitat zu twittern. http://codepen.io/nachamuami/pen/KrRYpY indem Sie versuchen, die Funktion zu twittern, ruft es die gesamte Funktion auf Twitter und nicht das Zitat, das durch den Code generiert wird. Alle Hinweise werden sehr geschätzt.Tweeting ein Angebot

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

Antwort

1

Die Aussage

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

ist anhängt tatsächlich die Funktion selbst an den URI. JavaScript kompensiert dies, indem es die Zeichenfolgenform annimmt, die in diesem Fall mehr oder weniger die genaue Deklaration ist, die Sie für getQuote, wenn auch als eine Zeichenfolge, vorgenommen haben.

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

In diesem Fall, dass Sie gehen, um noch ein Fehler auftritt, als getQuote keinen Rückgabewert hat, und damit die tweet einfach undefined sagen:

Sie haben möglicherweise die folgenden gemeint. Um dies zu korrigieren, müssen Sie eine Zeichenfolge in getQuote zurückgeben. Alternativ könnten Sie newQuoteY und newQuoteE außerhalb getQuote deklariert haben, aber immer noch von ihm gesetzt werden. Dies würde etwas wie das Folgende ermöglichen, wobei das aktuell angezeigte jiddische Zitat getwittert wird.

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

Danke, ich habe am Ende die neuenQuotes außerhalb der Funktion definiert. aber jetzt lief ich in ein anderes Problem, wenn ich versuche, das Zitat des ersten Platzhalters zu twittern, kommt es undefined auf. –

+0

@AharonHyman Sie müssen den ursprünglichen Wert von 'newQuoteY' als Anfangszitat festlegen oder den Wert von $ ('# inYiddish'). Text()'. Ich würde mich persönlich für Ersteres entscheiden, um die Unnötigkeit einer zusätzlichen DOM-Abfrage zu vermeiden, um etwas zu bekommen, das in den meisten Fällen zuvor vom JavaScript eingestellt wurde. –

+0

@AharonHyman Ein schöner Weg wäre, 'getQuote()' einmal auf Pageload auszuführen, was auch den zusätzlichen Bonus eines anderen Zitats hätte, wenn der Benutzer die Seite öffnet. –

Verwandte Themen