2013-08-28 3 views
0

J'essaie d'utiliser une variable en dehors d'une fonction.en utilisant une variable en dehors d'une fonction dans jquery

J'ai déjà défini la variable avant la fonction, mais je reçois un NaN (la variable est une valeur) lorsque je tente de le sortir.

Ci-dessous est mon code, et voici un jsfiddle.

$(function() { 

    // inital values 
    var total = $("#total").val("0"); 

    // slider A 
    $("#pricea").slider({ 
     value:0, 
     min: 0, 
     max: 500, 
     step: 50, 
     slide: function(event, ui) {                  
      $("#pricea").val(ui.value);                              
      var aaa = $("#pricea").val();   
      var bbb = $("#priceb").val(); 
      var total = $("#total").val(+aaa + +bbb);             
     }         
    }); 

    // slider B 
    $("#priceb").slider({ 
     value:0, 
     min: 0, 
     max: 500, 
     step: 50, 
     slide: function(event, ui) {                  
      $("#pricea").val(ui.value);                              
      var aaa = $("#pricea").val();   
      var bbb = $("#priceb").val();   
      var total = $("#total").val(+aaa + +bbb); 
     }         
    }); 

    $("#totalplus").val(+total + 10); 


    }); 

La variable est var total. Je tente de le sortir avec l'élément #totalplus.

Répondre

1

Votre variable totale contient un objet jquery, pas la valeur elle-même, donc ce n'est pas un nombre.

Vous devez utiliser la valeur total.val() dans la dernière ligne comme celui-ci:

$("#totalplus").val(parseInt(total.val()) + 10); 

Et vous pouvez ajouter cette même ligne à la fin de vos deux événements de diapositives. De même, comme mentionné précédemment, vous n'avez pas besoin de redéfinir la variable totale.

Voici un jsFiddle mise à jour: http://jsfiddle.net/8R7NW/1/

2

Vous devrez comprendre que, en utilisant le mot-clé var, vous redéfinissez la variable total dans la portée des deux fonctions de diapositives en tant que variables locales. La définition de la valeur de la variable n'aura aucune influence sur la variable d'étendue externe total en dehors de ces fonctions.

Si vous omettez le mot-clé var dans les fonctions, il devrait être possible d'accéder à la valeur en dehors des fonctions. MAIS: Les fonctions de rappel étant de nature asynchrone, votre dernière ligne de code sera probablement exécutée avant que la valeur ne change dans le rappel.

Solution: Tout ce que vous voulez faire avec la valeur modifiée total doit être fait à l'intérieur des rappels (y compris la sortie de la valeur).

+0

Merci, très utile. – user2726041

Questions connexes