J'essaie d'exécuter une fonction jquery dans une instruction IF.

En gros, j'obtiens la valeur d'une option de sélection et si la valeur de l'option sélectionnée est ce que je veux (htl in this example) alors je veux exécuter la fonction!

Mais lorsque j'encapsule le code dans une instruction IF, j'obtiens une erreur de syntaxe dont je n'ai aucune idée de la cause de ce problème.

Voici mon code entier:

var ascending = false;
$('.page_navigation .sortBy').change(function () {    
    var vals = $(this).val();
    if (vals == "htl") {    
        ///// I need to put the code bellow here    
    }
    var sorted = $('.mypro').sort(function (a, b) {
        return (ascending == (convertToNumber($(a).find('.prod-price').html()) < 
                  convertToNumber($(b).find('.prod-price').html()))) ? 1 : -1;
    });
    ascending = ascending ? false : true;

    $('#myCont').html(sorted);
});
var convertToNumber = function (value) {
    return parseFloat(value.replace('£', ''));
}

Quelqu'un pourrait-il s'il vous plaît conseiller sur cette question?

J'ai essayé cela et j'obtiens l'erreur de syntaxe:

var ascending = false;

$('.page_navigation .sortBy').change(function(){

    var vals = $(this).val();
    if(vals == "htl") {


    var sorted = $('.mypro').sort(function(a,b){
        return (ascending ==
               (convertToNumber($(a).find('.prod-price').html()) < 
                convertToNumber($(b).find('.prod-price').html()))) ? 1 : -1;
    });
    ascending = ascending ? false : true;

    $('#myCont').html(sorted);
});
var convertToNumber = function(value){
     return parseFloat(value.replace('£',''));
}
}
0
H.HISTORY 17 juil. 2015 à 13:34

3 réponses

Meilleure réponse

Votre fermeture si mal. Vous devez mettre l'accolade de fermeture (de l'instruction if) à l'intérieur de l'appel de fonction, donc:

var ascending = false;

$('.page_navigation .sortBy').change(function(){

    var vals = $(this).val();
    //closing brace matches this opening one
    if(vals == "htl") {    
          var sorted = $('.mypro').sort(function(a,b){
          return (ascending ==
               (convertToNumber($(a).find('.prod-price').html()) < 
                convertToNumber($(b).find('.prod-price').html()))) ? 1 : -1;
       });
       ascending = ascending ? false : true;

       $('#myCont').html(sorted);
   //put the brace inside the function...i.e. close the if brace
   }
});
var convertToNumber = function(value){
     return parseFloat(value.replace('£',''));
}

Le bit incorrect est:

var convertToNumber = function(value){
     return parseFloat(value.replace('£',''));
//WHY's this brace here!
}
}
5
Liam 17 juil. 2015 à 10:41

C'est exactement pourquoi vous devriez coder avec un IDE et non dans un éditeur de texte

Les erreurs de syntaxe seront mises en évidence instantanément et vous vous épargnerez beaucoup de temps

Jetez un oeil à la capture d'écran de netbeans:

enter image description here

0
andrew 17 juil. 2015 à 10:49

Limitez la portée de votre bloc if à $('#myCont').html(sorted); ie

if(vals == "htl") {
    var sorted = $('.mypro').sort(function(a,b){
        return (ascending ==
               (convertToNumber($(a).find('.prod-price').html()) < 
                convertToNumber($(b).find('.prod-price').html()))) ? 1 : -1;
    });
    ascending = ascending ? false : true;
    $('#myCont').html(sorted);
}
2
blex 17 juil. 2015 à 10:44