Ma condition en javascript ne fonctionne pas

Résolu/Fermé
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 31 juil. 2022 à 21:07
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 8 août 2022 à 06:20

Bonjour a tous

je souhaiterais encore un peu améliorer mon code et donc j'essaye de réaliser ma première condition en javascript 

Mais bien entendu elle ne fonctionne pas 

je souhaiterais que si le total de mon panier est égal a 0 que document.getElementById('nouveau_prix_total_modal').innerHTML =( ) soit vide 

Mais malheureusement cela me retourne une erreur que j'ai du mal a comprendre 

Uncaught SyntaxError: expected expression, got ')'

if (totalpanier = 0) {
  document.getElementById('nouveau_prix_total_modal').innerHTML =( ) ;
} else {
  document.getElementById('nouveau_prix_total_modal').innerHTML =((( (MonPanier.totalpanier()))) + Number(prix_choix_livraison) ).toFixed(2) ;
} 

je suis allé voir sur cette page mais je ne vois pas trop le soucis 

https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Errors/Unexpected_token

var Livraison = 2;
// Comment affiche-t-on les prix du panier et du total
// Pour rappel, les prix des produits sont à modifier via les attributs HTML data-prix dans le fichier index.php
// 0 pour aficher aucune décimale : 19 euros
// 2 pour afficher deux décimales : 19.00 euros
var decimal = 2;
// Ne pas modifier la suite sauf si vous désirez modifier le code

//on construits la variable MonPanier
var MonPanier = (function() {
	panier = [];

	//on realise une function Item
	function Item(nom, prix, quantite, url) {
		this.nom = nom;
		this.prix = prix;
		this.quantite = quantite;
		this.url = url;
		console.log(url);
	}

	//on realise une function pour sauver le panier
	function savepanier() {
		sessionStorage.setItem('MonPanier', JSON.stringify(panier));
		//	console.log(setItem);
		console.log(JSON.stringify(panier));
		console.log(('MonPanier', JSON.stringify(panier)));
	}

	//on realise une function pour lire le panier
	function loadpanier() {
		panier = JSON.parse(sessionStorage.getItem('MonPanier'));
	}
	if (sessionStorage.getItem("MonPanier") != null) {
		loadpanier();
	}
	var obj = {};

	//objet pour ajouter produit panier 
	obj.ajouter_produit_dans_panier = function(nom, prix, quantite, url) {
		for (var item in panier) {
			if (panier[item].nom === nom) {
				if (quantite) {
					panier[item].quantite = Number(quantite);
				} else {
					panier[item].quantite++;
				}
				savepanier();
				return;
			}
		}
		var item = new Item(nom, prix, quantite, url);
		panier.push(item);
		savepanier();
	}

	//objet pour la quanditee
	obj.setquantiteForItem = function(nom, quantite) {
		for (var i in panier) {
			if (panier[i].nom === nom) {
				panier[i].quantite = quantite;
				break;
			}
		}
	};

	//objet pour enlever le produit du panier 
	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();
	}

	//objet pour tout enlever du panier 
	obj.enlever_produit_de_panier_tous = function(nom) {
		for (var item in panier) {
			if (panier[item].nom === nom) {
				panier.splice(item, 1);
				break;
			}
		}
		savepanier();
	}

	//objet vider le panier 
	obj.clearpanier = function() {
		panier = [];
		savepanier();
	}

	//objet pour le total de la quanditee
	obj.totalquantite = function() {
		var totalquantite = 0;
		for (var item in panier) {
			totalquantite += Number(panier[item].quantite);
		}
		return Number(totalquantite);
	}

	//objet pour le taotal du panier 
	obj.totalpanier = function() {
		var totalpanier = 0;
		for (var item in panier) {
			totalpanier += panier[item].prix * panier[item].quantite;
		}
		return Number(totalpanier.toFixed(decimal));
	}

	//objet pour lister le panier 
	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(decimal);
			panierCopy.push(itemCopy)
		}
		return panierCopy;
	}
	return obj;
})();
//fin variable mon panier 

//function qui change la quanditee
function changeQte(element) {
	var qte = element.value;
	var t = $(element);
	var label = t.attr("aria-label");
	$("[data-nom='" + label + "']").attr('data-qte', qte);
}

//pour ajouter au panier 
$('.ajouter-panier').click(function(event) {
	event.preventDefault();
	var nom_option = "";
	var prix_option = 0;
	var url = $(this).data('url');
	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);
	if ($(this).attr('data-qte')) {
		var qte_option = $(this).attr('data-qte');
		MonPanier.ajouter_produit_dans_panier(nom, prix, qte_option, url);
	} else MonPanier.ajouter_produit_dans_panier(nom, prix, 1, url);
	afficherpanier();
});

//pour vider el panier 
$('.clear-panier').click(function() {
	MonPanier.clearpanier();
	afficherpanier();
});

//pour le choix de livraison 
$('.choix_livraison').click(function() {
	const cases = document.querySelectorAll('input[name="choix_livraison"]');
	for (const x of cases) {
		if (x.checked) {
			afficherpanier();
		}
	}
});

//pour afficher le panier 
function afficherpanier() {
	var panierArray = MonPanier.listpanier();
	var output = "";
	var countart = 0;
	var countart2 = 0;
	var count = 0;
	for (var i in panierArray) {
		output += "<div class='row' style='border-style: ridge;  border-width: 1px; border-color: #8ebf42; background-color: #d9d9d9;margin-bottom:5px;'>" +
			"<div class='col' style='text-align: center;border-left: solid;padding-left: 5px;padding-right: 5px;'><button class='btn btn-danger effacer-item' data-nom='" + panierArray[i].nom + "'>X</button></div>" +
			"<div class='col' style='text-align: center;border-left: solid;padding-left: 5px;padding-right: 5px;'>" + " <a class='example-image-link' href='" + panierArray[i].url + "'data-lightbox='example-set'><img src=""  style='width:100px;height:100px;'></a>" + "</div>" +
			"<div class='col' style='text-align: center;border-left: solid;padding-left: 5px;padding-right: 5px;'>" + panierArray[i].nom + "</div>" +
			"<div class='col' style='text-align: center;border-left: solid;padding-left: 5px;padding-right: 5px;'>" + panierArray[i].prix.toFixed(0) + "  euro</div>" +
			"<div class='form-inline col' style='text-align: center;border-left: solid;padding-left: 5px;padding-right: 5px;'><div class='input-group'><button class='btn btn-primary moins-item' data-nom='" + panierArray[i].nom + "'>-</button>" +
			"<input type='number' min='1' class='form-control item-quantite' style='width:55px !important' data-nom='" + panierArray[i].nom + "' value='" + panierArray[i].quantite + "'>" +
			"<button class='btn btn-primary plus-item' data-nom='" + panierArray[i].nom + "'>+</button></div></div>" +
			"<div class='col' style='text-align: center;border-left: solid;padding-left: 5px;padding-right: 5px;'>" + panierArray[i].total + " euros</div>" +
			"</div>";
		count++;
		countart += panierArray[i].quantite; // somme des unités d'articles
		countart2 = countart
	}
	$('.show-panier').html(output);
	if (Livraison == 2) {
		const cases = document.querySelectorAll('input[name="choix_livraison"]');
		for (const x of cases) {
			if (x.checked) {
				let nom_choix_livraison = x.dataset.nom;
				let prix_choix_livraison = x.value;
				let prix_et_livraison = (((MonPanier.totalpanier()))) + Number(prix_choix_livraison);
				document.getElementById('amount').value = prix_et_livraison;
				$('.total-panier').html(prix_et_livraison.toFixed(decimal));
				document.getElementById('livraison-detail').innerHTML = "(" + nom_choix_livraison + ")" + prix_choix_livraison + " euro(s)";
				document.getElementById('nouveau_prix_total_haut').innerHTML = ((((MonPanier.totalpanier())))).toFixed(2);
				//document.getElementById('nouveau_prix_total_modal').innerHTML =((( (MonPanier.totalpanier()))) + Number(prix_choix_livraison) ).toFixed(2) ;
				
				//test de ma condition 
				if (totalpanier = 0) {
  document.getElementById('nouveau_prix_total_modal').innerHTML =( ) ;
} else {
  document.getElementById('nouveau_prix_total_modal').innerHTML =((( (MonPanier.totalpanier()))) + Number(prix_choix_livraison) ).toFixed(2) ;
} 
				
				document.getElementById("prix_depart_haut").innerHTML = MonPanier.totalpanier();
				document.getElementById("prix_depart").innerHTML = MonPanier.totalpanier();
				break;
			}
		}
	}

	$('.total-panier-modal').html(MonPanier.totalpanier());
	$('.total-quantite').html(MonPanier.totalquantite());
	if ((Qte_Minimum == 1) && (Math.sign(MonPanier.totalquantite() - Qte_Minimum_Valeur) == -1) && (MonPanier.totalquantite() != 0)) {
		//document.getElementById('qte_minimum_report').innerHTML = txt_qte_minimum_bad;
	} else if ((Qte_Minimum == 1) && ((Math.sign(MonPanier.totalquantite() - Qte_Minimum_Valeur) == 1) || (Math.sign(MonPanier.totalquantite() - Qte_Minimum_Valeur) == 0)) && (MonPanier.totalquantite() != 0)) {
		//document.getElementById('qte_minimum_report').innerHTML = txt_qte_minimum_ok;
	} else if (Qte_Minimum == 1) {
		//document.getElementById('qte_minimum_report').innerHTML = txt_qte_minimum_defaut;  
	} else if (Qte_Minimum == 0) {
		//document.getElementById('qte_minimum_report').innerHTML = "";
	}
	//document.getElementById('total_qte_haut').innerHTML = MonPanier.totalquantite();
	document.getElementById('total_qte').innerHTML = MonPanier.totalquantite();
	document.getElementById('total_qte_bas').innerHTML = MonPanier.totalquantite();
	document.getElementById('total_qte_modal').innerHTML = MonPanier.totalquantite();
}

//pour tout effacer
$('.show-panier').on("click", ".effacer-item", function(event) {
	var nom = $(this).data('nom')
	MonPanier.enlever_produit_de_panier_tous(nom);
	afficherpanier();
})

//moins un article 
$('.show-panier').on("click", ".moins-item", function(event) {
	var nom = $(this).data('nom')
	MonPanier.enlever_produit_de_panier(nom);
	afficherpanier();
})

//plus un article 
$('.show-panier').on("click", ".plus-item", function(event) {
	var nom = $(this).data('nom')
	MonPanier.ajouter_produit_dans_panier(nom);
	afficherpanier();
})

//changer un article 
$('.show-panier').on("change", ".item-quantite", function(event) {
	var nom = $(this).data('nom');
	var quantite = Number($(this).val());
	MonPanier.setquantiteForItem(nom, quantite);
	afficherpanier();
});
afficherpanier();

3 réponses

Whismeril Messages postés 19032 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 28 avril 2024 931
31 juil. 2022 à 21:22

Bonsoir

va sur cette page https://www.w3schools.com/js/js_operators.asp et regarde les opérateurs de comparaison et regarde la différence avec l'opérateur d'assignation


1
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
31 juil. 2022 à 23:19

il fallait un double == grrr

1

"il fallait un double == grrr"

ou un triple si vous voulez une égalité stricte(ce qui est recommandé dans pas mal de cas, tout dépends bien sûr des valeurs à tester).

En effet "=" et "==" n'ont strictement rien à voir et "==" et différent de "===".

1
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187 > Totoro
8 août 2022 à 06:20

Merci pour l'explication

0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
31 juil. 2022 à 23:20

bonsoir 

Merci pour la réponse

je viens juste de trouver avant ta réponse

Mais merci quand même

0