Aide pour corriger une fonction

Fermé
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 26 janv. 2022 à 12:25
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 - 27 janv. 2022 à 11:12
bonjour a tous

cela fait de nouveau des jours que je me bats avec mon panier en javascript
il me manque juste un détail pour la finalisation
je suis confronté a un petit soucis

Mon panier en javascript qui fonctionne très bien sur pc

Lorsque je clic dans le select le nombre d'article passe a 1 et lorsque je choisi une quantité le data-qte prends la valeur de l élément value

donc cela est correct

mais sur mon smartphone cela ne fonctionne pas correctement

Lorsque je clic dans le select le nombre d'article passe a 1 et lorsque je choisi une quantité le data-qte NE prends PAS la valeur de l élément value

je souhaiterais donc que lorsque je clic dans le select pour choisir une quantité que cela n'indique pas 1 mais prenne la valeur de l'élément value

voici un lien vers un exemple

https://phil.pecheperle.be/panier/index1.php

j'ai donc fouiller mon code pour savoir ou et comment cela se passait

j'ai donc la partie html qui permet de sélectionner le select
<select class="form-select btn btn-primary ajouter-panier" aria-label="2001" onchange="changeQte(this);" style="cursor:pointer;" data-nom="2001" data-prix="1.00" data-qte="1"   data-checkbox="2001"  style="padding-top: 0.375rem;  padding-right: 0rem;  padding-bottom: 0.375rem;  padding-left: 0rem; ">
	              <option selected value="0">0 sachet dans le panier </option>
				  <option value="1"> sachet dans le panier</option>
	              <option value="1">1 sachet dans le panier</option>
			<option value="2">2 sachets dans le panier</option>
	              <option value="3">3 sachets dans le panier</option>
	              <option value="4">4 sachets dans le panier</option>
	              <option value="5">5 sachets dans le panier</option>
	            	            </select>


ce qui me fait des misères c'est ce data-qte="1" que j'ai mis a data-qte="0" mais cela n a rien change

lors du clic dans le select cette fonction est appelée et donc utilise le data-qte

$('.ajouter-panier').click(function(event) {
	event.preventDefault(); 

//on mets des variables a 0
	var nom_option = "";
	var prix_option = 0;
	var option_checkbox = $(this).data('checkbox');

//on regarde si le checkbox est coche
	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'));
				}
			}
	}  

//on regarde si le select est choisi
	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);

//on test la date-qte partie qui m intéresse
	if ($(this).attr('data-qte'))
	{
		var qte_option = $(this).attr('data-qte');
		MonPanier.ajouter_produit_dans_panier(nom, prix, qte_option);
	}
	else MonPanier.ajouter_produit_dans_panier(nom, prix, 1);

	afficherpanier();
});

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


a ce moment la console m affiche 1
je souhaiterais que ca soit l élément value qui soit pris en compte et donc n affiche rien puisque je n'ai aps encore fait de choix

ensuite je choisi la quantité avec le select value
a ce moment sur mon pc la valeur data-qte prends bien la valeur de l'element.value

par contre sur mon smartphone cela ne se passe pas

et le code est le suivant

function changeQte(element){

//on traite la variable qte
	var qte = element.value;
	var t = $(element);
	var label = t.attr("aria-label");
	let data_qte =  document.querySelector("[data-nom='"+ label +"']");
	data_qte.removeAttribute("data-qte");
	data_qte.setAttribute("data-qte", ""+qte+"");
	

//on affiche le pop up
   let m;
	 m = "\ Le panier compte désormais ";
	 m += "<font color='red'><strong>";
	  m += event.target.getAttribute("data-qte");
	  m += "</strong></font>";
  m += " sachet(s) de l'article \'";
  m += event.target.getAttribute("data-nom");
   //m += "\" a bien été ajouté au panier";
  function insertAfter(newNode, existingNode) {
    existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  }
  let e = document.createElement('div');
  let s = "";
  e.classList.add("maJolieAlert");
  s += '<div><p>' + m + '</p>';
  s += '<button type="button" onclick="fermeMaJolieAlert(event)">OK</button></div>';
  e.innerHTML = s;
  insertAfter(e, event.target);
}
   
	function fermeMaJolieAlert(event) {
  event.target.parentNode.parentNode.remove();
}

7 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 janv. 2022 à 14:56
Bonjour,

Pour actualiser le data-attribute dynamiquement dans le DOM il ne faut pas utiliser le .data() mais plutôt la forme
$(element).attr('data-qte', '10');
 

0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
26 janv. 2022 à 15:02
Bonjour Jordane
Merci pour la réponse

Même si je réalise des efforts en javascripts
je ne vois pas trop bien la modification a réaliser ...

je sais que pour toi tu vois cela même sans y faire attention
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
26 janv. 2022 à 15:59
Je viens de relire ton code... je vois que tu as triffouillé un truc avec
let data_qte =  document.querySelector("[data-nom='"+ label +"']");
data_qte.removeAttribute("data-qte");
data_qte.setAttribute("data-qte", ""+qte+"");


essaye donc juste
$("[data-nom='"+ label +"']").attr('data-qte', qte);


NB: pense bien à vider le cache de ton navigateur après avoir modifié ton code js..
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
26 janv. 2022 à 16:04
Merci jordane pour la correction
après avoir vider le cache du mobile
cela ne change rien
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
26 janv. 2022 à 15:26
cela ne serait il pas a modifier dans le code html?
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
26 janv. 2022 à 17:55
Tout ce que j ai tenté jusqu' a présent n'a pas fonctionner
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
27 janv. 2022 à 09:01
bonjour
petit up svp
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
27 janv. 2022 à 09:02
Montre nous le code source généré de la page
( code obtenu via le navigateur internet en faisant CTRL + u lorsque tu es sur la page )
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
27 janv. 2022 à 09:09
voila
<!DOCTYPE html>
<html lang="fr">
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
		<meta name="description" content="Comment créer un panier en JavaScript, jQuery et PHP">
		<meta name="author" content="Antoine | 1FORMATIK.com">
		<title>Comment créer un panier en JavaScript, jQuery et PHP</title>
		<!--  
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-+0n0xVW2eSR5OomGNYDnhzAbDsOXxcvSN1TPprVMTNDbiYZCxYbOOl7+AMvyTG2x" crossorigin="anonymous">
		<link href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" rel="stylesheet" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous">
		-->
		
		<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
	<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.1/css/lightbox.min.css">
	<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.js"></script>
		
		<style>
		
		/*code origine*/
		h4 {
			margin-top:20px;
		}
		h4:after
		{
			content:' ';
			display:block;
			border:1px solid black;
		}
		
		
		/* debut pour faire disparaitre panier */
	
	#A {
		position: fixed;
		top: 0;
		position: sticky;
		top: 0;
		z-index: 1;
		width: 100%;
		/* margin-bottom: 60px; */
		float: right;
		max-width: 400px;
	}
	
	#B {
		color: white;
	}
	
	.visiblediv:first-of-type {
		margin-top: calc(20vh + 1em);
	}
	
	.visiblediv {}
	/* fin pour faire disparaitre panier */
	/*pour les frais de transport*/
	
	.desc {
		display: none;
	}
	
	.desc.selected {
		display: block;
	}
	
	label {
		display: block;
	}
	
	::-webkit-details-marker {
		display: none;
	}
	
	.row {
		--bs-gutter-x: 1.0rem;
		--bs-gutter-y: 0;
		display: flex;
		flex-wrap: wrap;
		margin-top: calc(-1 * var(--bs-gutter-y));
		margin-right: calc(-.5 * var(--bs-gutter-x));
		margin-left: calc(-.5 * var(--bs-gutter-x));
	}
	
	.text-end {
		text-align: center !important;
	}
	
	p {
		margin-top: 0;
		margin-bottom: 0;
	}
	
	.centrer_titre_texte {
		text-align: center;
		background-color: #fff;
	}
	/* debut ecrire sur image */
	
	.overlay {
		display: none;
		color: #07ff50;
		font-family: "Roboto", sans-serif;
		font-size: 20px;
		font-weight: 700;
		font-style: italic;
	}
	
	.product .overlay {
		display: flex;
	}
	/* fin ecrire sur image */
	
	.h2,
	h2 {
		font-size: 1rem;
	}
	/*     .header{
   position: sticky;
    top: 0;
    z-index: 1;
    width: 100%;
    /* margin-bottom: 60px; */
	
	float: right;
	max-width: 400px;
}

/*acccordepn*/
@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap');
body {
	font-family: "Inter", sans-serif;
	padding: 20px;
}
.question {
	color: #555;
	padding: 15px;
	font-weight: 700;
	font-size: 16px;
	border: 1px solid #ccc;
	background: #efefef;
}
.question:hover {
	cursor: pointer;
}
.answer {
	color: #777;
	padding: 15px;
	font-weight: 400;
	font-size: 13px;
	border: 1px solid #ccc;
	border-top: none;
}

/*donner meme hauteur aux images */
img,
svg {
	height: 143.5px;
}
/*pour afficher l alerte sur les images */
   button.articleBtn {
  border: 0;
  background: none;
  text-decoration: underline;
  cursor: pointer;
}

.maJolieAlert {
  position: absolute;
  z-index: 10;
  left: 10%;
    background-color: #8695b7;
 color: #090908;
height: 150px;
width: 200px;
font-size: 20px;
}

.maJolieAlert:before {
  content: "";
  position: fixed;
  z-index: -10;
  display: block;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  background: #0007;
 
}

.maJolieAlert>div {
  border: 0.25em solid black;
  border-radius: 0.25em;
  padding: 0.25em;
  background: #fff;

}
		</style>
	</head>
	
<body style="background-color:#cec1c1;" onLoad="document.getElementById('attente').style.display='none'">
	<!-- debut container global-->
	<div class="container" style="background-color:#87CEEB;padding-left: 5px;padding-right: 5px; ">
	    
	    	<!-- debut du panier-->
		<div id="A">
			<div class="container">
				<div class="row">
					<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12" style="background-color: azure;text-align:right;font-size:15px;display: block;margin-left: auto;margin-top:15px;border-left: 1rem solid;border-top: 1rem solid;border-right: 1rem solid;">Prix net <i id="prix_depart_haut"></i> euros </div>
				</div>
				<div class="row">
					<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 " style="background-color: azure;text-align:right;font-size:15px;display: block;margin-left: auto;border-left: 1rem solid;border-right: 1rem solid;">Votre remise de 25 % <i id="remise_haut"></i> euros </div>
				</div>
				<div class="row">
					<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 " style="background-color: azure;text-align:right;font-size:15px;display: block;margin-left: auto;border-left: 1rem solid;border-right: 1rem solid;">Prix apres remise <i id="nouveau_prix_haut"></i> euros </div>
				</div>
				<div class="row">
					<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 " style="background-color: azure;text-align:right;font-size:15px;display: block;margin-left: auto;border-left: 1rem solid;border-right: 1rem solid;"> <i id="livraison-detail_haut"></i> </div>
				</div>
				<div class="row">
					<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 " style="background-color: azure;text-align:right;font-size:15px;display: block;margin-left: auto;border-left: 1rem solid;border-right: 1rem solid;">frais fixe <i id="frais-fixe_haut"></i> euros </div>
				</div>
				<div class="row">
					<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 " style="background-color: azure;text-align:right;font-size:20px;display: block;margin-left: auto;border-left: 1rem solid;border-right: 1rem solid;">Prix total <i id="nouveau_prix_total_haut"></i> euros </div>
				</div>
				<div class="row">
					<div class="col-xl-12 col-lg-12 col-md-12 col-sm-12 col-xs-12 " style="padding-left: 5px;padding-right: 5px;background-color: beige;display: block;margin-left: auto;margin-bottom:15px;border-left: 1rem solid;border-right: 1rem solid;border-bottom: 1rem solid;"> Nombre de produit(s) dans le panier : <i id="countart_haut"></i> <a class="example-image-link" href="https://phil.pecheperle.be/test9.php#ancre" title="monsite">voir panier</a>
					<i id="total_qte_haut"></i>
					
					</div>
				</div>
			</div>
		</div>
		<!-- fin du panier-->
	    <!-- debut du du code sous le panier -->
		<div class="visiblediv">
		
			<!-- debut image entete--><img src="https://phil.pecheperle.be/image/top_image_perle-a-la-perle.jpg" alt="baniere pour la pêche à la perle" style="margin-left:auto;margin-right:auto;margin-top:-320px;height:212px;width:100%;">
			
				<!-- id attende chargement page -->
			<div id="attente">
				<p style="text-align: center;font-size: 24px;">Veuillez patienter svp la page est en cours de chargement ne touchez a rien ...</p>
			</div>
	    
	    
	    
<!-- debut container article-->
			<div class="container " style ="padding-left: 5px;padding-right: 5px;">
				<!-- debut accordeon article
					<div class="col-md-12 text-end"> 	-->									
				<div id="faq_slide">
					<div class="question">Perles de 2 mmm</div>
					<div class="answer" style ="padding-left: 5px;padding-right: 5px; padding-top:15px;padding-bottom:15px;">
						<!-- debut perle-->
						<div class="card-deck row">
							<!-- perle 2001-->
				<div class="col-xl-2 col-lg-4 col-md-6 col-sm-6 col-xs-12  " style="margin-bottom: 15px;padding-left: 5px;padding-right: 5px;">
	  <div class="card">
	    <h3 class="card-title centrer_titre_texte">2001</h3>
	    <div class="popupgallery">
	      <div class="position-relative product">
	        <a class="example-image-link" href="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2001.JPG" data-lightbox="example-set" data-title="Cliquez n'importe où en dehors de l'image ou le X à droite pour fermer.">
	          <div class="overlay w-100 h-100 position-absolute justify-content-center">
	            <p class="align-self-center" style="text-align: center;">clic pour agrandir</p>
	          </div>
	          <img class="example-image" src="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2001.JPG" alt="" width="100%" />
	        </a>
	      </div>
	    </div>
	    <div class="card-body" style=" padding-top: 1rem; padding-right: 0.25rem; padding-bottom: 1rem; padding-left: 0.25rem;">
	      <div class="row mt-12">
	        <div class="col-md-12">
	          <p class="card-text centrer_titre_texte">Perle de 2 mm</p>
	          <div class="centrer_titre_texte">
	            <p> 3 perles identiques</p>
	            <p> 1 euro</p>
	          </div>
	        </div>
	        <div class="row mt-12" style="display: block;margin-left: auto;margin-right: auto;padding-left: 0px;padding-right: 0px;">
	          <div class="col-md-12" style="padding-right: 0px;padding-left: 0;">
	                    <select class="form-select btn btn-primary ajouter-panier" aria-label="2001" onchange="changeQte(this);" style="cursor:pointer;padding-top: 0.375rem;  padding-right: 0rem;  padding-bottom: 0.375rem;  padding-left: 0rem;" data-nom="2001" data-prix="1.00" data-qte="1"   data-checkbox="2001"  >
	              <option selected value="0">0 sachet dans le panier </option>
				  <option value="1"> sachet dans le panier</option>
	              <option value="1">1 sachet dans le panier</option><option value="2">2 sachets dans le panier</option>
	              <option value="3">3 sachets dans le panier</option>
	              <option value="4">4 sachets dans le panier</option>
	              <option value="5">5 sachets dans le panier</option>
	              <option value="6">6 sachets dans le panier</option>
	              <option value="7">7 sachets dans le panier</option>
	              <option value="8">8 sachets dans le panier</option>
	              <option value="9">9 sachets dans le panier</option>
	              <option value="10">10 sachets dans le panier</option>
	          
	            </select>
				
	          </div>
	          <div class="row mt-4">
	            <div class="form-check">
	              <!--<input class="form-check-input 2001" type="checkbox" data-nom="Option 1" data-prix="-0.50" id="case_01" checked>-->
	              <!--<label class="form-check-label" for="case_01" style ="font-size: 20px;background-color: #ffe300;color: red;font-weight: bold;"> remise de 50% </label>-->
	            </div>
	          </div>
	        </div>
	        <div class="col-md-12 text-end">
	          
	        </div>
	      </div>
	    </div>
	  </div>
	</div>
	<!-- perle 2002-->
	
	<div class="col-xl-2 col-lg-4 col-md-6 col-sm-6 col-xs-12  " style="margin-bottom: 15px;padding-left: 5px;padding-right: 5px;">
	  <div class="card">
	    <h3 class="card-title centrer_titre_texte">2002</h3>
	    <div class="popupgallery">
	      <div class="position-relative product">
	        <a class="example-image-link" href="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2002.JPG" data-lightbox="example-set" data-title="Cliquez n'importe où en dehors de l'image ou le X à droite pour fermer.">
	          <div class="overlay w-100 h-100 position-absolute justify-content-center">
	            <p class="align-self-center" style="text-align: center;">clic pour agrandir</p>
	          </div>
	          <img class="example-image" src="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2002.JPG" alt="" width="100%" />
	        </a>
	      </div>
	    </div>
	    <div class="card-body" style=" padding-top: 1rem; padding-right: 0.25rem; padding-bottom: 1rem; padding-left: 0.25rem;">
	      <div class="row mt-12">
	        <div class="col-md-12">
	          <p class="card-text centrer_titre_texte">Perle de 2 mm</p>
	          <div class="centrer_titre_texte">
	            <p> 3 perles identiques</p>
	            <p> 1 euro</p>
	          </div>
	        </div>
	        <div class="row mt-12" style="display: block;margin-left: auto;margin-right: auto;padding-left: 0px;padding-right: 0px;">
	          <div class="col-md-12" style="padding-right: 0px;padding-left: 0;">
	                    <select class="form-select btn btn-primary ajouter-panier" aria-label="2002" onchange="changeQte(this);" style="cursor:pointer;padding-top: 0.375rem;  padding-right: 0rem;  padding-bottom: 0.375rem;  padding-left: 0rem;" data-nom="2002" data-prix="1.00" data-qte="1" data-checkbox="2002"  >
	              <option selected value="0">0 sachet dans le panier </option>
	              <option value="1">1 sachet dans le panier</option><option value="2">2 sachets dans le panier</option>
	              <option value="3">3 sachets dans le panier</option>
	              <option value="4">4 sachets dans le panier</option>
	              <option value="5">5 sachets dans le panier</option>
	              <option value="6">6 sachets dans le panier</option>
	              <option value="7">7 sachets dans le panier</option>
	              <option value="8">8 sachets dans le panier</option>
	              <option value="9">9 sachets dans le panier</option>
	              <option value="10">10 sachets dans le panier</option>
	             
	            </select>
				
	          </div>
	          <div class="row mt-4">
	            <div class="form-check">
	              <!--<input class="form-check-input 2002" type="checkbox" data-nom="Option 1" data-prix="-0.50" id="case_01" checked>-->
	              <!--<label class="form-check-label" for="case_01" style ="font-size: 20px;background-color: #ffe300;color: red;font-weight: bold;"> remise de-50% </label>-->
	            </div>
	          </div>
	        </div>
	        <div class="col-md-12 text-end">
	          
	        </div>
	      </div>
	    </div>
	  </div>
	</div>
		
		<!-- perle 2003-->
	
	<div class="col-xl-2 col-lg-4 col-md-6 col-sm-6 col-xs-12  " style="margin-bottom: 15px;padding-left: 5px;padding-right: 5px;">
	  <div class="card">
	    <h3 class="card-title centrer_titre_texte">2003</h3>
	    <div class="popupgallery">
	      <div class="position-relative product">
	        <a class="example-image-link" href="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2003.JPG" data-lightbox="example-set" data-title="Cliquez n'importe où en dehors de l'image ou le X à droite pour fermer.">
	          <div class="overlay w-100 h-100 position-absolute justify-content-center">
	            <p class="align-self-center" style="text-align: center;">clic pour agrandir</p>
	          </div>
	          <img class="example-image" src="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2003.JPG" alt="" width="100%" />
	        </a>
	      </div>
	    </div>
	    <div class="card-body" style=" padding-top: 1rem; padding-right: 0.25rem; padding-bottom: 1rem; padding-left: 0.25rem;">
	      <div class="row mt-12">
	        <div class="col-md-12">
	          <p class="card-text centrer_titre_texte">Perle de 2 mm</p>
	          <div class="centrer_titre_texte">
	            <p> 3 perles identiques</p>
	            <p> 1 euro</p>
	          </div>
	        </div>
	        <div class="row mt-12" style="display: block;margin-left: auto;margin-right: auto;padding-left: 0px;padding-right: 0px;">
	          <div class="col-md-12" style="padding-right: 0px;padding-left: 0;">
	                    <select class="form-select btn btn-primary ajouter-panier" aria-label="2003" onchange="changeQte(this);" style="cursor:pointer;padding-top: 0.375rem;  padding-right: 0rem;  padding-bottom: 0.375rem;  padding-left: 0rem;" data-nom="2003" data-prix="1.00" data-qte="1" data-checkbox="2003"  >
	              <option selected value="0">0 sachet dans le panier </option>
	              <option value="2">2 sachets dans le panier</option>
	              <option value="3">3 sachets dans le panier</option>
	              <option value="4">4 sachets dans le panier</option>
	              <option value="5">5 sachets dans le panier</option>
	              <option value="6">6 sachets dans le panier</option>
	              <option value="7">7 sachets dans le panier</option>
	              <option value="8">8 sachets dans le panier</option>
	              <option value="9">9 sachets dans le panier</option>
	              <option value="10">10 sachets dans le panier</option>
	        
	            </select>
				
	          </div>
	          <div class="row mt-4">
	            <div class="form-check">
	              <!--<input class="form-check-input 2003" type="checkbox" data-nom="Option 1" data-prix="-0.50" id="case_01" checked>-->
	                 <!--<label class="form-check-label" for="case_01" style ="font-size: 20px;background-color: #ffe300;color: red;font-weight: bold;"> remise de-50% </label>-->
	            </div>
	          </div>
	        </div>
	        <div class="col-md-12 text-end">
	          
	        </div>
	      </div>
	    </div>
	  </div>
	</div>
		<!-- perle 2005-->
	
<div class="col-xl-2 col-lg-4 col-md-6 col-sm-6 col-xs-12  " style="margin-bottom: 15px;padding-left: 5px;padding-right: 5px;">
	  <div class="card">
	    <h3 class="card-title centrer_titre_texte">2005</h3>
	    <div class="popupgallery">
	      <div class="position-relative product">
	        <a class="example-image-link" href="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2005.JPG" data-lightbox="example-set" data-title="Cliquez n'importe où en dehors de l'image ou le X à droite pour fermer.">
	          <div class="overlay w-100 h-100 position-absolute justify-content-center">
	            <p class="align-self-center" style="text-align: center;">clic pour agrandir</p>
	          </div>
	          <img class="example-image" src="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2005.JPG" alt="" width="100%" />
	        </a>
	      </div>
	    </div>
	    <div class="card-body" style=" padding-top: 1rem; padding-right: 0.25rem; padding-bottom: 1rem; padding-left: 0.25rem;">
	      <div class="row mt-12">
	        <div class="col-md-12">
	          <p class="card-text centrer_titre_texte">Perle de 2 mm</p>
	          <div class="centrer_titre_texte">
	            <p> 3 perles identiques</p>
	            <p> 1 euro</p>
	          </div>
	        </div>
	        <div class="row mt-12" style="display: block;margin-left: auto;margin-right: auto;padding-left: 0px;padding-right: 0px;">
	          <div class="col-md-12" style="padding-right: 0px;padding-left: 0;">
	                    <select class="form-select btn btn-primary ajouter-panier" aria-label="2005" onchange="changeQte(this);" style="cursor:pointer;padding-top: 0.375rem;  padding-right: 0rem;  padding-bottom: 0.375rem;  padding-left: 0rem;" data-nom="2005" data-prix="1.00" data-qte="1" data-checkbox="2005"  >
	              <option selected value="0">0 sachet dans le panier </option>
	              <option value="1">1 sachet dans le panier</option>
				  <option value="2">2 sachets dans le panier</option>
	              <option value="3">3 sachets dans le panier</option>
	              <option value="4">4 sachets dans le panier</option>
	              <option value="5">5 sachets dans le panier</option>
	              <option value="6">6 sachets dans le panier</option>
	              <option value="7">7 sachets dans le panier</option>
	              <option value="8">8 sachets dans le panier</option>
	              <option value="9">9 sachets dans le panier</option>
	              <option value="10">10 sachets dans le panier</option>
	          
	            </select>
				
	          </div>
	          <div class="row mt-4">
	            <div class="form-check">
	              <!--<input class="form-check-input 2005" type="checkbox" data-nom="Option 1" data-prix="-0.50" id="case_01" checked>-->
	              <!--<label class="form-check-label" for="case_01" style ="font-size: 20px;background-color: #ffe300;color: red;font-weight: bold;"> remise de-50% </label>-->
	            </div>
	          </div>
	        </div>
	        <div class="col-md-12 text-end">
	          
	        </div>
	      </div>
	    </div>
	  </div>
	</div>
		
			<!-- perle 2006-->
	
<div class="col-xl-2 col-lg-4 col-md-6 col-sm-6 col-xs-12  " style="margin-bottom: 15px;padding-left: 5px;padding-right: 5px;">
	  <div class="card">
	    <h3 class="card-title centrer_titre_texte">2006</h3>
	    <div class="popupgallery">
	      <div class="position-relative product">
	        <a class="example-image-link" href="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2006.JPG" data-lightbox="example-set" data-title="Cliquez n'importe où en dehors de l'image ou le X à droite pour fermer.">
	          <div class="overlay w-100 h-100 position-absolute justify-content-center">
	            <p class="align-self-center" style="text-align: center;">clic pour agrandir</p>
	          </div>
	          <img class="example-image" src="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2006.JPG" alt="" width="100%" />
	        </a>
	      </div>
	    </div>
	    <div class="card-body" style=" padding-top: 1rem; padding-right: 0.25rem; padding-bottom: 1rem; padding-left: 0.25rem;">
	      <div class="row mt-12">
	        <div class="col-md-12">
	          <p class="card-text centrer_titre_texte">Perle de 2 mm</p>
	          <div class="centrer_titre_texte">
	            <p> 3 perles identiques</p>
	            <p> 1 euro</p>
	          </div>
	        </div>
	        <div class="row mt-12" style="display: block;margin-left: auto;margin-right: auto;padding-left: 0px;padding-right: 0px;">
	          <div class="col-md-12" style="padding-right: 0px;padding-left: 0;">
	                    <select class="form-select btn btn-primary ajouter-panier" aria-label="2006" onchange="changeQte(this);" style="cursor:pointer;padding-top: 0.375rem;  padding-right: 0rem;  padding-bottom: 0.375rem;  padding-left: 0rem;" data-nom="2006" data-prix="1.00" data-qte="1" data-checkbox="2006"  >
	              <option selected value="0">0 sachet dans le panier </option>
	              <option value="1">1 sachet dans le panier</option><option value="2">2 sachets dans le panier</option>
	              <option value="3">3 sachets dans le panier</option>
	              <option value="4">4 sachets dans le panier</option>
	              <option value="5">5 sachets dans le panier</option>
	              <option value="6">6 sachets dans le panier</option>
	              <option value="7">7 sachets dans le panier</option>
	              <option value="8">8 sachets dans le panier</option>
	              <option value="9">9 sachets dans le panier</option>
	              <option value="10">10 sachets dans le panier</option>
	           
	            </select>
				
	          </div>
	          <div class="row mt-4">
	            <div class="form-check">
	              <!--<input class="form-check-input 2006" type="checkbox" data-nom="Option 1" data-prix="-0.50" id="case_01" checked>-->
	              <!--<label class="form-check-label" for="case_01" style ="font-size: 20px;background-color: #ffe300;color: red;font-weight: bold;"> remise de-50% </label>-->
	            </div>
	          </div>
	        </div>
	        <div class="col-md-12 text-end">
	          
	        </div>
	      </div>
	    </div>
	  </div>
	</div>
		
					<!-- perle 2007-->
	
	<div class="col-xl-2 col-lg-4 col-md-6 col-sm-6 col-xs-12  " style="margin-bottom: 15px;padding-left: 5px;padding-right: 5px;">
	  <div class="card">
	    <h3 class="card-title centrer_titre_texte">2007</h3>
	    <div class="popupgallery">
	      <div class="position-relative product">
	        <a class="example-image-link" href="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2007.JPG" data-lightbox="example-set" data-title="Cliquez n'importe où en dehors de l'image ou le X à droite pour fermer.">
	          <div class="overlay w-100 h-100 position-absolute justify-content-center">
	            <p class="align-self-center" style="text-align: center;">clic pour agrandir</p>
	          </div>
	          <img class="example-image" src="https://phil.pecheperle.be/image-perles/perle-verre-peche-gardon-2007.JPG" alt="" width="100%" />
	        </a>
	      </div>
	    </div>
	    <div class="card-body" style=" padding-top: 1rem; padding-right: 0.25rem; padding-bottom: 1rem; padding-left: 0.25rem;">
	      <div class="row mt-12">
	        <div class="col-md-12">
	          <p class="card-text centrer_titre_texte">Perle de 2 mm</p>
	          <div class="centrer_titre_texte">
	            <p> 3 perles identiques</p>
	            <p> 1 euro</p>
	          </div>
	        </div>
	        <div class="row mt-12" style="display: block;margin-left: auto;margin-right: auto;padding-left: 0px;padding-right: 0px;">
	          <div class="col-md-12" style="padding-right: 0px;padding-left: 0;">
	                    <select class="form-select btn btn-primary ajouter-panier" aria-label="2007" onchange="changeQte(this);" style="cursor:pointer;padding-top: 0.375rem;  padding-right: 0rem;  padding-bottom: 0.375rem;  padding-left: 0rem;" data-nom="2007" data-prix="1.00" data-qte="1" data-checkbox="2007"  >
	              <option selected value="0">0 sachet dans le panier </option>
	              <option value="1">1 sachet dans le panier</option><option value="2">2 sachets dans le panier</option>
	              <option value="3">3 sachets dans le panier</option>
	              <option value="4">4 sachets dans le panier</option>
	              <option value="5">5 sachets dans le panier</option>
	              <option value="6">6 sachets dans le panier</option>
	              <option value="7">7 sachets dans le panier</option>
	              <option value="8">8 sachets dans le panier</option>
	              <option value="9">9 sachets dans le panier</option>
	              <option value="10">10 sachets dans le panier</option>
	          
	            </select>
				
	          </div>
	          <div class="row mt-4">
	            <div class="form-check">
	              <!--<input class="form-check-input 2007" type="checkbox" data-nom="Option 1" data-prix="-0.50" id="case_01" checked>-->
	              <!--<label class="form-check-label" for="case_01" style ="font-size: 20px;background-color: #ffe300;color: red;font-weight: bold;"> remise de-50% </label>-->
	            </div>
	          </div>
	        </div>
	        <div class="col-md-12 text-end">
	          
	        </div>
	      </div>
	    </div>
	  </div>
	</div>
	</div><!-- fin  rangee 1-->
	
						
						
						
							
				
		
	<!-- fin  rangee 4-->

						
						
					
						
						
					
						
						
								
					
								
		
						
							
					
						</div>
					</div>
				</div><!-- fin accordeon genral-->
			</div><!-- fin du container article-->
					</div><!-- fin de visible-->		
							

			<div id="ancre" style="margin-top: 00px;"></div>
		<!-- debut container entete-->
		<!-- debut container bon de commande -->
		
			<div class="container">
				<div class="row">
					<div class="col-md-4" style="background: #346780;display: block;margin-left: auto;margin-right: auto;margin-top: 15px;">
						<h1 style="text-align: center;">Votre commande</h1> </div>
				</div>
			</div>
		
		<!-- debut titre bon de commande -->
		<div class="container"> <a class="btn btn-primary text-white" href="https://phil.pecheperle.be/test9.php#" role="button" style="color: #000000; font-weight: bold; font-size: 20px;margin-top: 15px;margin-bottom: 15px;">Retour haut page </a> </div>
		<!-- debut titre ristourne accordee -->
		<div class="container" style ="padding-right:5px;padding-left:5px;">
					<!--	<div class="row"><div id="qte_minimum_report"></div> </div>-->
			<div class="row">
				<div class="col centrer_titre_texte"> Supprimer la ligne </div>
				<div class="col centrer_titre_texte"> Article </div>
				<div class="col centrer_titre_texte"> Prix unitaire </div>
				<div class="col centrer_titre_texte"> Nombre sachet(s) </div>
				<div class="col centrer_titre_texte"> Total </div>
			</div>
					<div class="container show-panier mx-auto" style=" width:100% ;margin-right:5px;margin-left:5px;padding-right: 5px;padding-left: 5px;" id="macommande" style="border-style: ridge;  border-width: 1px; border-color: #8ebf42; background-color: #d9d9d9;"></div>
			<br> </div>
		
		
				
			<!-- frais fixe  -->
			<div class="row">
				<div class="col-xl-7 col-lg-8 col-md-12 col-sm-12 col-xs-12 " style="background-color: azure;text-align:right;font-size:15px;display: block;margin-left: auto;">
				<span style="font-size:20px;">frais fixe</span> <i id="frais-fixe" style="font-size:20px;font-weight: bold;"></i> <span style="font-size:20px;font-weight: bold;">euros</span> </div>
			</div>
			
			<!-- dtotla panier vider panier , nombre articles   -->
			<div class="row">
				<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12 col-xs-12 ">
				</div>
				<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12 col-xs-12 " style="display: block;margin-left: auto;margin-right: auto;margin-bottom: auto;margin-top: auto;">
					<div class="text-end">
						<button class="clear-panier btn btn-danger">Vider le panier</button>
					</div>
				</div>
				<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12 col-xs-12  mt-3" style="padding-left: 5px;padding-right: 5px;background-color: beige;display: block;margin-left: auto;margin-bottom:15px;">
				Nombre de produit(s) dans le panier : <i id="countart_bas"></i>
				
				
				</div>
				<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12 col-xs-12 " style="background-color: azure;text-align:right;font-size:20px;display: block;margin-left: auto;margin-right: auto;margin-bottom: auto;margin-top: auto;">
				<div style="font-size: 20px;">Prix total: <b><span class="total-panier" id="prix_total" ></span> euros</b></div>
				</div>
			</div>
		</div>
		
		<div id="B"></div>
	
			
		<!-- debut coordonnees mondial relay   -->
	
			
			<!-- peux servir pour les options de livraisons  -->
			<!-- 
            <div id="ref-fr" class="desc">
               languageCode FR
            </div>-->
			</div>
				<!-- conainer aveertissement avant paiement   -->
			
		
	
		<!-- script paiment paypal  -->
	
		<!-- fin accordeon answer   -->
		<!-- fin accordeon paiement   -->
	
		
		

		




<!-- pour le onclick des articles  
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js" integrity="sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js" integrity="sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV" crossorigin="anonymous"></script> -->

<script src="panier.js"></script>
<!-- pour envoyer les infos vers mail.php -->

	

<!-- pour le menu des perles -->
			<script type="text/javascript">
		$("#faq_slide .answer").not(":first").hide();
		$("#faq_slide .question").click(function(){
			if($(this).next(".answer").is(":visible")) {
				$(this).next(".answer").slideUp(300);
			} else {
				$(this).next(".answer").slideDown(300).siblings(".answer").slideUp(300);
			}
		});
		</script>
		
		<!-- pour afficher modial relay quand on choisi mode envois mondial relay  -->
		<script language="javascript">
		$(document).ready(function(){
			$("div.desc").hide();
			$("input[name$='choix_livraison']").click(function(){
				var languageCode = $(this).data('lang');
				$("div.desc").hide();
				$("#ref-" + languageCode).show();
			});
		});
		</script>

	<!-- pour le panier volant  -->
		<script type="text/javascript">
		function isVisible(e) {
			let WH = $(window).height(), // Viewport height
				WS = $(window).scrollTop(), // Scroll top
				EH = $(e).height(), // Element height
				EOT = $(e).offset().top; // Element offset top
			return(EOT < (WH + WS - EH));
		}
		$(window).scroll(function(){
			if(isVisible($('#B'))) {
				$('#A').css("display", "none");
			} else {
				$('#A').css("display", "block");
			}
		});
			</script>
<!--  
	pour le onclick des articles   
			 <script type="text/javascript">
	function fermeMaJolieAlert(event) {
  event.target.parentNode.parentNode.remove();
}

function ouvreMaJolieAlert(event) {
  let m;
  m = "L'article \"";
  m += event.target.getAttribute("data-nom");
  m += "\" a bien été ajouté au panier";
  function insertAfter(newNode, existingNode) {
    existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
  }
  let e = document.createElement('div');
  let s = "";
  e.classList.add("maJolieAlert");
  s += '<div><p>' + m + '</p>';
  s += '<button type="button" onclick="fermeMaJolieAlert(event)">OK</button></div>';
  e.innerHTML = s;
  insertAfter(e, event.target);
}
			 </script>-->







<script src="//cdnjs.cloudflare.com/ajax/libs/lightbox2/2.11.1/js/lightbox-plus-jquery.min.js"></script>
		<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.10.2/dist/umd/popper.min.js" integrity="sha384-7+zCNj/IqJ95wo16oMtfsKbZ9ccEh31eOz1HGyDuCQ6wgnyJNSYdrPa03rtR1zdB" crossorigin="anonymous"></script>
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>
		<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
</div>

</body>
</html>
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
27 janv. 2022 à 09:53
attends...... tu veux modifier le data-qte du SELECT sur lequel tu changes la valeur ?
pourquoi passes tu par la récupération du "nom" dans le aria .. pour ensuite cibler le select qui dispose du data-nom correspondant .... alors que... ben.. tu es déjà sur l'élément voulu ? si tu as plus alambiqué que ça fais moi signe :-)
ou alors.. expliques moi la raison si il y en a une ...

par ce que sinon.. il suffirait de faire
function changeQte(element){

  //on traite la variable qte
	var qte = element.value;
	
  //juste pour le debug
  var old_dataqte = element.getAttribute("data-qte");	
  console.log('Valeur avant modif : ' , old_dataqte );

	element.setAttribute("data-qte", ""+qte+"");
	
  //juste pour le debug
  var new_dataqte = element.getAttribute("data-qte");	
  console.log('Valeur après modif : ' , new_dataqte );

  
//on affiche le pop up
  let  m = "\ Le panier compte désormais ";
    m += "<font color='red'><strong>";
    m += qte;
    m += "</strong></font>";
    m += " sachet(s) de l'article \'";
    m += element.getAttribute("data-nom");
    //m += "\" a bien été ajouté au panier";

  let e = document.createElement('div');
      e.classList.add("maJolieAlert");
  let s = "";
      s += '<div><p>' + m + '</p>';
      s += '<button type="button" onclick="fermeMaJolieAlert(event)">OK</button></div>';

  e.innerHTML = s;
  insertAfter(e, element);
}

function insertAfter(newNode, existingNode) {
   existingNode.parentNode.insertBefore(newNode, existingNode.nextSibling);
}
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187 > jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024
27 janv. 2022 à 10:20
Merci pour le code
en effet lorsque je clic dans le select
la valeur qui est prise compte est celle du data-qte qui est récupérée par le click avec cette fonction
$('.ajouter-panier').click(function(event)

a l'intérieur de celle-ci
il se passe ceci
if ($(this).attr('data-qte'))
	{
		var qte_option = $(this).attr('data-qte');
		MonPanier.ajouter_produit_dans_panier(nom, prix, qte_option);
	}
	else MonPanier.ajouter_produit_dans_panier(nom, prix, 1);

	afficherpanier();


donc a ce moment avant que la fonction changeQte puisse s exécuter car je n'ai pas encore choisi de quantité
la var qte_option prends la valeur 0 ou celle qui est dans le code html

et c 'est donc cette partie qui pose soucis
car le panier affiche 0 ou la valeur du data_qte du code html sur mon mobile et sur le pc aussi

puis je choisi une quantité dans le select
a ce moment la fonction changeQte est exécutée
et sur mon pc le nombre d article s affiche correctement

Mais sur le mobile cela reste a 0 ou la valeur du data_qte du code html

je viens de tester ton code
la console affiche ceci

0
Valeur avant modif : 1
Valeur après modif : 9
9


a tout hasard peux tu tester sur ton telephone

https://phil.pecheperle.be/panier/index2.php

si tu as le même phénomène
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187 > flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024
27 janv. 2022 à 10:57
complément d informations que je viens de remarquer sur le mobile
Lorsque je clic sur le select
cela affiche 0
lorsque je choisi une quantité cela affiche toujours 0
lorsque j appuie une deuxième fois sur le select cela affiche bien la bonne quantité
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187 > flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024
27 janv. 2022 à 11:12
cela ne serait il pas tout simplement un soucis avec le select ...
0
flexi2202 Messages postés 3795 Date d'inscription lundi 14 mars 2011 Statut Membre Dernière intervention 21 avril 2024 187
27 janv. 2022 à 09:29
bien évidement j'ai juste garder le strict minimum de mon code qui fait plus de 15000 lignes
pour que cela puisse servir d exemple
0