2009-10-14 8 views
0

En fait, je suis Hacking une configuration foxycart je cours et je dois cacher au fond une certaine option de livraison doivent quelques choses sur la page existe ...Quel est le problème avec mon instruction IF dans javascript & jquery?

1) que la valeur de $! = États-Unis (ce qui est tiré dynamiquement à partir d'une entrée de texte, mais à des fins de vous montrer que je l'ai fait une variable statique ici
2) le numéro « .fc_cart_item » se produit une seule fois est
3) le texte « .fc_cart_item_quantity » est seulement 1
et
4) le texte contenu dans #fc_cart_table contient Xyz ou Zyx

Ici i s ma déclaration qui fonctionne un peu ...

var value = 'Australia'; 

if( 
    ( $value != 'United States' && $('.fc_cart_item').size() < 2 && $('.fc_cart_item_quantity').text() < 2 ) &&  
    ( $('#fc_cart_table:contains(\'Zyx\')') || $('#fc_cart_table:contains(\'Xyz\')') )  
) 

    { 

     // do stuff 

    } 

Maintenant, ce travaillait (tout ce que je mis en // faire des choses se produirait) que je pense quand j'avais Xyz ou Zyx dans le panier ... mais il faisait toujours des choses même quand c'était autre chose que Xyz ou Zyx.

Je viens d'un environnement PHP donc je ne sais pas si je fais ma déclaration if correctement ici.

Répondre

1

L'instruction if dans votre exemple retournera toujours true du fait que le sélecteur: contains ne renvoie pas de valeur booléenne pouvant être utilisée en toute sécurité pour une instruction if. Essayez ceci:

value = "Australia"; 

if((value != "United States" && $(".fc_cart_item").size() < 2 && 
    $(".fc_cart_item_quantity").text() < 2 ) && 
    ($("#fc_cart_table").is(":contains('Zyx')") || 
    $("#fc_cart_table").is(":contains('Xyz')") ) 
{ 

    // do stuff 
} 

BTW, votre peut dire que vous êtes d'un arrière-plan de PHP avec votre syntaxe de valeur $ ... :)

+0

acclame pour ce zdawg – willdanceforfun

1

Il est « faire des choses » lorsque ces conditions sont remplies:


$value != 'United States' && $('.fc_cart_item').size() < 2 && $('.fc_cart_item_quantity').text() < 2 ) 

même s'il n'y a pas Zyx ou Xyz dans le panier.

1

Essayez ce qui suit. Notez que les variables ne sont pas accessibles par $value mais par value. Vous ne devriez pas non plus vérifier $('#fc_cart_table:contains(\'Zyx\')') - le résultat est un tableau vide qui est évalué booléen comme vrai. Plutôt utiliser soit $('#fc_cart_table:contains(\'Zyx\')').size() ou utilisé ci-dessous:

var value = 'Australia'; 

if( 
    ( value != 'United States' && $('.fc_cart_item').size() < 2 && parseInt($('.fc_cart_item_quantity').text()) < 2 ) &&  
    ( $('#fc_cart_table').text().indexOf('Zyx') > -1 || $('#fc_cart_table').text().indexOf('Xyz') > -1 )  
) 
{ 
    // do stuff 
} 

/edit: J'ai aussi ajouté une déclaration parseInt() juste pour l'amour de l'utilisation du bon type.

+0

merci MrMage. J'ai choisi zdawgs parce que c'était moins de code. le vôtre a aussi travaillé! – willdanceforfun

1

Supprimez le $ avant value. Et mettez parseInt() autour de $('.fc_cart_item_quantity').text().

+1

Ce n'est pas suffisant, comme mentionné dans les autres réponses. – MrMage

Questions connexes