2010-10-06 6 views
0

J'ai un bloc de code jQuery pour un widget twitter que je développe,Pousser une variable en dehors d'une fonction

$.getJSON("http://twitter.com/users/show.json?screen_name=" + twitterfeed + "&callback=?" , 
    function(data) {  

    var fString = ($('<div id="userimage"><h1>'+ data.followers_count +'</h1></div>').digits()).text(); 
    var tString = ($('<div id="userimage"><h1>'+ data.statuses_count +'</h1></div>').digits()).text(); 

     $('#left-sidebar').prepend('<div id="userimage"><h1>'+ tString +'</h1></div>'); 
     $('#left-sidebar').prepend('<div id="userimage"><h2>TWEETS</h2></div>');   
     $('#left-sidebar').prepend('<div id="userimage"><h1>'+ fString +'</h1></div>'); 
     $('#left-sidebar').prepend('<div id="userimage"><h2>FOLLOWERS</h2></div>'); 
     $('#left-sidebar').prepend('<div id="userimage"><img id="ProfileImageLarge" src=' + data.profile_image_url + '></div>'); 
    }); 

Je veux saisir fString et tString et de les utiliser dans des fonctions en dehors.

J'ai également besoin que la valeur de data.followers_count et data.statuses_count soit transmise avec la variable afin que la valeur soit correcte dans n'importe quelle fonction au lieu de indéfinie.

+0

Je vois une meilleure question serait comment utiliser ces variables à l'extérieur et obtenir l'état de 'data.followers_count' avec lui. – Chamilyan

+0

J'ai mis à jour ma question. – Chamilyan

+0

ces valeurs peuvent être stockées en utilisant la même méthode. Stockez-les dans une variable correctement définie ou joignez-les en tant que données à un élément DOM. Voir ma réponse ci-dessous. – Ender

Répondre

0
window.fString = fString 

Ensuite, dans votre fonction vous pouvez référencer window.fString dans d'autres fonctions

3

Vous n'avez pas besoin de les mettre dans un contexte global en utilisant window.fString, vous pouvez simplement déplacer vos déclarations var en dehors du $ .getJSON. Dans les fermetures javascript, l'accès aux variables définies en dehors d'une fonction est autorisé, mais aucune variable définie dans la fonction ne sera accessible à l'extérieur.

var fString, tString; 

$.getJSON(... , function(){ 
    fString = ...; 
}); 

Toutes les fonctions définies dans le même champ de .getJSON $ auront également accès à fstring et TString

0

Définir ces variables partout qui est portée à la fois votre appel getJSON et les autres fonctions. Idéalement, vous ne les définissez pas sur l'objet de fenêtre global, car c'est la plus grande quantité d'overkill que vous pouvez obtenir. En outre, vous pouvez les joindre en tant que données à une partie arbitraire de votre balisage (j'utilise le <body>). Vous pouvez le faire comme ceci:

$('body').data('fstring', ($('<div id="userimage"><h1>'+ data.followers_count +'</h1></div>').digits()).text()); 
$('body').data('tString', ($('<div id="userimage"><h1>'+ data.statuses_count +'</h1></div>').digits()).text()); 

Ces valeurs peuvent être accessibles en tant que tel:

var fString = $('body').data('fstring'); 
var tString = $('body').data('tstring'); 

Vous pouvez également utiliser .data() pour stocker ces valeurs de données qui reviennent de votre demande de getJSON , de sorte que ceux-ci peuvent être consultés plus tard aussi bien.

Voici les docs pour .data(): http://docs.jquery.com/Data

Et voici une démonstration de l'utilisation des données pour accéder à une valeur définie d'une autre fonction: http://jsfiddle.net/9zcET/

Questions connexes