2 votes

Comment utiliser une variable déclarée dans une fonction de clic ?

J'ai l'impression que c'est une question vraiment basique... dont je ne trouve pas la réponse ! Juste une fonction basique de clic en jQuery :

$('button.one').click(function () {
    var selectorVal = 'one';
    $('div#one').slideDown('slow');
    $('div#two').slideUp('fast');
    return selectorVal;
}

Comment récupérer et sortir selectorVal en dehors de la fonction ? Merci beaucoup !

1voto

bozdoz Points 4356

Il faut faire de selectorVal une variable globale comme ceci ; pas besoin de retourner quoi que ce soit avec cette fonction :

var selectorVal = '';
$('button.one').click(function(){
    selectorVal = 'one';
    $('div#one').slideDown('slow');
    $('div#two').slideUp('fast');
}

1voto

Tadeck Points 37046

Vous avez deux options :

  1. Définir une variable en dehors du callback :

    var selectorVal;
    $('button.one').click(function (){
        selectorVal = 'one';
        $('div#one').slideDown('slow');
        $('div#two').slideUp('fast');
    });
    // somewhere here check for selectorVal value (if any)
  2. (mieux) Utiliser un autre callback :

    var doSomethingWithSelectorVal = function(selectorVal){
        // here do something with updated selectorVal value
    };
    $('button.one').click(function (){
        selectorVal = 'one';
        $('div#one').slideDown('slow');
        $('div#two').slideUp('fast');
        doSomethingWithSelectorVal(selectorVal);
    });

Comme je l'ai mentionné plus haut, la deuxième option est la meilleure, car l'utilisation d'un callback dans ce cas est plus adaptée.

0voto

Shomz Points 13012

Pouvez-vous créer une variable globale en dehors de la fonction et y ajouter une valeur à l'intérieur de la fonction (sans avoir à retourner quoi que ce soit) ?

0voto

Tigra Points 1134

Cela dépend du moment où vous voulez y accéder Par exemple, si vous êtes sûr de vouloir y accéder après l'exécution de la fonction "clic", vous pouvez utiliser cette technique :

var outer_variable=null;
$('button.one').click(function () {
var selectorVal = 'one';
$('div#one').slideDown('slow');
$('div#two').slideUp('fast');
outer_variable=selectorVal;
return True;
}

0voto

akalter Points 8

Vous pouvez utiliser la fenêtre. Quelque chose comme

$('button.one').click(function () {
    window["var2"]="somedata";
}

Après cela, vous aurez accès à la variable via la fenêtre mais aussi sur la portée globale. Vous pouvez écrire alert(var2) en dehors de la fonction et cela fonctionnera.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X