bonjour a tous
je pensais ne plus devoir demander de l aide
Mais malheureusement mes connaissances en javascript sont encore trop limite
pourtant cela fait presque 2 jours que je cherche
J'ai donc mon fameux panier qui fonctionne
Mais dont j'essaye de l améliorer encore un peu
pour l'instant on peux ajouter les articles un a a un dans le panier
il n'y a pas un select pour choisir la quantité
donc si un utilisateur veux 30 fois le même article
il va devoir cliquer 30 fois
J'ai essaye de comprendre le code et j'ai déjà un peu modifié le code
avec un select dans le html
et une modification dans le javascript (déjà un bon début)
j'ai commence avec deux articles diffèrent pour faire un test
le premier select fonctionne bien et donc si je choisis 5
j'ai bien 5 articles dans ma console
par contre si l utilisateur change d'avis et qu 'il indique 5
le total du panier s'incrémente de 1
si il change encore d'avis et indique 3
le compteur s'incrémente de 1 et donc cela fait 7 car 5+1+1
donc j'ai un soucis au niveau de l incrémentation
d'anvance un grand merci
voici la mini partie du thml pour le select
et voici une partie du panier
je pensais ne plus devoir demander de l aide
Mais malheureusement mes connaissances en javascript sont encore trop limite
pourtant cela fait presque 2 jours que je cherche
J'ai donc mon fameux panier qui fonctionne
Mais dont j'essaye de l améliorer encore un peu
pour l'instant on peux ajouter les articles un a a un dans le panier
il n'y a pas un select pour choisir la quantité
donc si un utilisateur veux 30 fois le même article
il va devoir cliquer 30 fois
J'ai essaye de comprendre le code et j'ai déjà un peu modifié le code
avec un select dans le html
et une modification dans le javascript (déjà un bon début)
j'ai commence avec deux articles diffèrent pour faire un test
le premier select fonctionne bien et donc si je choisis 5
j'ai bien 5 articles dans ma console
par contre si l utilisateur change d'avis et qu 'il indique 5
le total du panier s'incrémente de 1
si il change encore d'avis et indique 3
le compteur s'incrémente de 1 et donc cela fait 7 car 5+1+1
donc j'ai un soucis au niveau de l incrémentation
d'anvance un grand merci
voici la mini partie du thml pour le select
<div class="row mt-3">
<div class="col-md-4">
<p>Produit 02 (15.00 €)</p>
</div>
<div class="col-md-2">
<select class="form-control" id="01">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
</div>
<div class="col-md-6 text-end">
<a style="cursor:pointer;" data-nom="Produit 02" data-prix="15.00" data-select="01" class="btn btn-primary ajouter-panier">Add to Cart</a>
</div>
</div>
<div class="row mt-3">
<div class="col-md-4">
<p>Produit 02 (15.00 €)</p>
</div>
<div class="col-md-2">
<select class="form-control" id="02">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
</select>
</div>
<div class="col-md-6 text-end">
<a style="cursor:pointer;" data-nom="Produit 02" data-prix="15.00" data-select="02" class="btn btn-primary ajouter-panier">Add to Cart</a>
</div>
</div>
et voici une partie du panier
var Livraison = 3;
// ne pas modifier la suite sauf si vous désirez modifier le code
var MonPanier = (function() {
panier = [];
function Item(nom, prix, quantite) {
this.nom = nom;
this.prix = prix;
this.quantite = quantite;
}
function savepanier() {
sessionStorage.setItem('MonPanier', JSON.stringify(panier));
}
function loadpanier() {
panier = JSON.parse(sessionStorage.getItem('MonPanier'));
}
if (sessionStorage.getItem("MonPanier") != null) {
loadpanier();
}
var obj = {};
obj.ajouter_produit_dans_panier = function(nom, prix, quantite) {
for(var item in panier) {
if(panier[item].nom === nom) {
panier[item].quantite ++;
console.log(panier[item].quantite);
savepanier();
return;
}
}
var item = new Item(nom, prix, quantite);
panier.push(item);
savepanier();
}
obj.setquantiteForItem = function(nom, quantite) {
for(var i in panier) {
if (panier[i].nom === nom) {
panier[i].quantite = quantite;
break;
}
}
};
obj.enlever_produit_de_panier = function(nom) {
for(var item in panier) {
if(panier[item].nom === nom) {
panier[item].quantite --;
if(panier[item].quantite === 0) {
panier.splice(item, 1);
}
break;
}
}
savepanier();
}
obj.enlever_produit_de_panier_tous = function(nom) {
for(var item in panier) {
if(panier[item].nom === nom) {
panier.splice(item, 1);
break;
}
}
savepanier();
}
obj.clearpanier = function() {
panier = [];
savepanier();
}
obj.totalquantite = function() {
var totalquantite = 0;
for(var item in panier) {
totalquantite += panier[item].quantite;
console.log(panier[item].quantite);
}
return totalquantite;
}
obj.totalpanier = function() {
var totalpanier = 0;
for(var item in panier) {
totalpanier += panier[item].prix * panier[item].quantite;
console.log(panier[item].quantite);
}
return Number(totalpanier.toFixed(2));
}
obj.listpanier = function() {
var panierCopy = [];
for(i in panier) {
item = panier[i];
itemCopy = {};
for(p in item) {
itemCopy[p] = item[p];
}
itemCopy.total = Number(item.prix * item.quantite).toFixed(2);
panierCopy.push(itemCopy)
}
return panierCopy;
}
return obj;
})();
$('.ajouter-panier').click(function(event) {
event.preventDefault();
var nom_option = "";
var prix_option = 0;
var option_checkbox = $(this).data('checkbox');
if (option_checkbox != "") {
var checkboxes = document.getElementsByClassName(option_checkbox);
for(var i = 0; i < checkboxes.length; i++) {
if (checkboxes[i].checked == true) {
var nom_option = nom_option + " (" + $(checkboxes[i]).data('nom') +")";
var prix_option = prix_option + Number($(checkboxes[i]).data('prix'));
}
}
}
// if ($(this).data('select'))
//{
//var nom = $(this).data('nom') + " (" + document.getElementById(""+$(this).data('select')+"").value + ")" + //nom_option;
//}
// else
var nom = $(this).data('nom');
var prix = Number($(this).data('prix')) + prix_option;
var test =document.getElementById(""+$(this).data('select')+"").value ;
//MonPanier.ajouter_produit_dans_panier(nom, prix, 1);ancien code
MonPanier.ajouter_produit_dans_panier(nom, prix, test);
afficherpanier();
console.log(test );
});