11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous j'ai un petit souci que je ne comprends pas Smiley biggol

donc en faite je programme un panier qui est droppable en jquery
le produit s'ajoute bien dans le panier avec la quantité et le prix.

quand je remet le même produit, la quantité augmente de 1 et le prix est multiplié par la quantité
rien de bien magique Smiley biggrin

le problème c'est quand je rajoute un autre produit, il se met en dessous du premier mais les prix du premier produit change et est égal au prix du 2eme Smiley sweatdrop

et le code javascript est généré en php pour compliquer la tâche Smiley murf


<div id="panier" class="grid_3">
    <div id="content_panier">
        <div id="panier_products" >

                <div class="placeholder"><div id="show_span">Ajouter vos achats ici</div></div>

        </div>
        <div id="panier_commande">


        </div>
    </div>
</div>


Le problème avec la variable :
//c'est la que ça pose probleme je n'arrive pas à prendre la qte de la div ayant l'id voulu  
var qte =  $(".placeholder #"+lib).find(\'span.qte\').html(); 
alert(qte); //il renvoie null 


mais quand je fais ça, ça m'affiche les prix mais ça remplace le prix de toutes mes div
j'ai le même problème avec le replaceWith Smiley confus


$data['panier'] = '
//Div contenant le produit                                                               
$( ".one_product").draggable({
			
			helper: "clone",
                        revert: true,
                        
		});
//Div du panier droppable
$( "#panier,#panier_products .placeholder" ).droppable({
			activeClass: "",
			hoverClass: "ui-state-hover",
			accept: ":not(.ui-sortable-helper)",
			drop: function( event, ui ) {
                            
                          //on récup le prix du produit de la div draggable
                          var price=  ui.draggable.find(".prixprod").html();

		         //on récup le libellé du produit de la div draggable
                          var lib = ui.draggable.find(".libprod").html();
                                

                                 var checkdiv = false;
                                 
                                    var test = null;
                                    //Array contenant les lib
                                    var index = [];

                                //Pour chaque div du panier 
                                $(".placeholder div").each(function(e,n){
                                   //on récupére l\'id
                                    index[e] = $(this).attr("id");
                                    
                                   //Si l'id de la div correspond au lib de l'element draggable on retourne false pour arreter le each
                                    if(index[e] == lib){
                                         
                                         checkdiv = true;
                                         return false;
                                         
                                    }else{
                                        checkdiv = false;
                                        return true;
                                        
                                     }

                                    test = null;
                                });
                                //Si le produit existe déjà dans le panier alors on rajoute qte+1 et prix*qte
                                if(checkdiv == true){
                                //on récup la structure du panier pour pas s'y perdre
                                var dom = $(".placeholder").html();
                                alert(dom);
 // ex : <div id="Pain au chocolat">x<span class="qte">1</span> <span>Pain au 
// chocolat</span><span class="prixprod"> 0.70</span></div>

                                            //c'est la que ça pose probleme je n'arrive pas à prendre la qte de la div ayant l'id voulu 
                                            var qte =  $(".placeholder #"+lib).find(\'span.qte\').html();
                                            alert(qte); //il renvoie null
                                         
                                         
                                         if(qte == null || qte >= 1 ){
                                         
                                         
                                        
                                         qte = parseInt(qte) +1;// qte renvoie NaN donc probleme pour calculer le prix et la qte [smile]
                                         
                                         $(".placeholder span.qte").replaceWith("<span class=\'qte\'>"+qte+"</span>");

                                         var prix = parseFloat(price) * parseFloat(qte) ;
                                         prix = Math.round (prix*100) / 100;
                                         $(".placeholder span.prixprod").replaceWith(" <span class=\'prixprod\'>"+prix+"</span>");
                                         
                                         
                                        }
                                        
                                         

                                    }else{
                                        $(".placeholder #show_span").remove();
                                        $( "<div id=\'"+lib+"\'></div>" ).html( "x<span class=\'qte\'>1</span> <span >"+lib+"</span><span class=\'prixprod\'>"+price+"</span>" ).appendTo( ".placeholder" );
                                        

                                     }

         	
			}
		});

';


Bref en gros jvex avoir la qte de la div ayant l'id pain au chocolat quoi Smiley ravi


Merci ! Smiley smile
Modifié par delsuza (03 Apr 2011 - 20:21)
c'était tout bête en faite Smiley confused

j'aurais du mettre l'id du produit au lieu du libellé dans l'id de la div

Smiley biggol Smiley biggol