亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

Table des matières
Analyse du problème
Solution?: délégation d'événements et traversée du DOM
Résumer
Maison interface Web tutoriel HTML Solution au bouton JavaScript d'augmentation et de diminution de la quantité du panier d'achat qui ne prend effet que sur le premier élément

Solution au bouton JavaScript d'augmentation et de diminution de la quantité du panier d'achat qui ne prend effet que sur le premier élément

Oct 15, 2025 pm 10:39 PM

Solution au bouton JavaScript d'augmentation et de diminution de la quantité du panier qui ne prend effet que sur le premier élément

Cet article vise à résoudre le problème selon lequel lorsque JavaScript implémente la fonction d'augmentation ou de diminution de la quantité du panier, cela ne prend effet que sur le premier élément de la page. En analysant les causes des erreurs courantes et en fournissant une solution d'optimisation basée sur la délégation d'événements et la traversée du DOM, nous aidons les développeurs à mettre en ?uvre une fonction de contr?le de la quantité de panier réutilisable, simple et efficace. Dans le même temps, l’importance d’écrire une structure HTML efficace est soulignée.

Lors du développement d'un panier d'achat ou d'une page de détails d'un produit, il est souvent nécessaire de mettre en ?uvre la fonction d'augmentation ou de diminution des quantités. Une erreur courante est que lorsqu'il y a plusieurs produits sur la page, le code JavaScript ne fonctionne que pour le premier produit. Cela est généralement d? au fait que le code sélectionne uniquement le premier élément et ne gère pas correctement plusieurs éléments. Cet article explorera ce problème et fournira une solution plus efficace et réutilisable.

Analyse du problème

Le code initial essayait d'utiliser querySelectorAll pour obtenir tous les boutons, mais le problème persistait. Les principales raisons sont :

  1. Problème de sélecteur?: l'utilisation d'un nom de classe numéroté (tel que .pqt-plus1) entra?ne la sélection par le code du premier élément.
  2. Portée des variables?: des variables indépendantes sont créées pour chaque élément, ce qui entra?ne une mauvaise réutilisation du code et des difficultés de maintenance.

Solution?: délégation d'événements et traversée du DOM

Une solution plus élégante consiste à utiliser la délégation d'événements et la traversée du DOM. Cette approche améliore les performances et la maintenabilité du code en évitant d'avoir à ajouter des écouteurs d'événements pour chaque bouton.

Optimisation de la structure HTML?:

Tout d’abord, nous devons optimiser la structure HTML pour la rendre plus facile à manipuler. Supprimez les suffixes numériques des noms de classe et utilisez des noms de classe génériques. En même temps, utilisez l'attribut data pour stocker les valeurs croissantes et décroissantes. Et le problème selon lequel le div dans la structure HTML ne peut pas être localisé dans la balise span a été corrigé.

 <div class="d-flex align-items-center pls-moins">
  <span class="count-number float-right">
    <button type="button" class="btn-sm gauche décembre btn btn-outline-secondary pqt-minus" data-inc="-1"> 
      <i class="feather-minus"></i> - 
    
    <span class="cart-button">
      <span class="added">0</span>
    </span>
    <button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1"> 
      <i class="feather-plus"></i>   
    
  </button></button></span>
</div>

<div class="d-flex align-items-center pls-moins">
  <span class="count-number float-right">
    <button type="button" class="btn-sm gauche décembre btn btn-outline-secondary pqt-minus" data-inc="-1"> 
      <i class="feather-minus"></i> - 
    
    <span class="cart-button">
      <span class="added">0</span>
    </span>
    <button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1"> 
      <i class="feather-plus"></i>   
    
  </button></button></span>
</div>

<div class="d-flex align-items-center pls-moins">
  <span class="count-number float-right">
    <button type="button" class="btn-sm gauche décembre btn btn-outline-secondary pqt-minus" data-inc="-1"> 
      <i class="feather-minus"></i> - 
    
    <span class="cart-button">
      <span class="added">0</span>
    </span>
    <button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1"> 
      <i class="feather-plus"></i>   
    
  </button></button></span>
</div>

<div class="d-flex align-items-center pls-moins">
  <span class="count-number float-right">
    <button type="button" class="btn-sm gauche décembre btn btn-outline-secondary pqt-minus" data-inc="-1"> 
      <i class="feather-minus"></i> - 
    
    <span class="cart-button">
      <span class="added">0</span>
    </span>
    <button type="button" class="btn-sm right inc btn btn-outline-secondary pqt-plus" data-inc="1"> 
      <i class="feather-plus"></i>   
    
  </button></button></span>
</div>

Code Javascript?:

 document.querySelectorAll(".btn-sm").forEach(btn => {
  btn.addEventListener('clic', e => {
    let total = e.target.closest('.pls-moins').querySelector('.added');
    total.textContent = Math.max(0, parseInt(total.textContent, 10) parseInt(e.currentTarget.dataset.inc, 10));
  });
});

Explication du code?:

  1. document.querySelectorAll(".btn-sm").forEach(btn => { ... }); : Sélectionnez tous les boutons avec le nom de classe .btn-sm et ajoutez des écouteurs d'événement pour chaque bouton.
  2. e.target.closest('.pls-moins') : e.target est l'élément qui a déclenché l'événement (c'est à dire le bouton cliqué). close('.pls-moins') recherche jusqu'à l'élément ancêtre le plus proche qui a la classe .pls-moins.
  3. .querySelector('.added') : Parmi les éléments .pls-moins trouvés, recherchez un élément avec le nom de classe .added qui affiche la quantité.
  4. parseInt(total.textContent, 10) : convertit la quantité de contenu textuel en un entier. 10 représente le nombre décimal.
  5. parseInt(e.currentTarget.dataset.inc, 10) : récupère la valeur de l'attribut data-inc sur le bouton cliqué et convertissez-la en entier. e.currentTarget pointe vers l'élément (c'est-à-dire le bouton) auquel l'écouteur d'événement est lié.
  6. Math.max(0, ...) : Assurez-vous que la quantité n'est jamais inférieure à 0.

Résumer

En utilisant la délégation d'événements et la traversée du DOM, nous pouvons écrire du code JavaScript plus concis et maintenable pour gérer plusieurs éléments. Cette approche rend non seulement le code plus efficace, mais facilite également son extension et sa modification. N'oubliez pas que l'écriture d'une structure HTML valide est la clé de la mise en ?uvre de cette solution. évitez d'utiliser des noms de classe numérotés et utilisez des noms de classe génériques et des attributs de données pour stocker les informations pertinentes. Enfin, assurez-vous que votre structure HTML est valide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefa?on, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT

Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Conseils CSS: Masquer précisément le contenu texte spécifique sans affecter les éléments parentaux Conseils CSS: Masquer précisément le contenu texte spécifique sans affecter les éléments parentaux Sep 16, 2025 pm 10:54 PM

Ce tutoriel détaille comment utiliser CSS pour masquer avec précision le contenu de texte spécifique dans les pages HTML pour éviter que le problème de l'ensemble de l'élément parent soit caché en raison de sélecteurs inappropriés. En ajoutant des classes CSS exclusives aux éléments d'emballage du texte cible et en utilisant l'affichage: aucun; Attribut, les développeurs peuvent obtenir un contr?le raffiné des éléments de page, en veillant à ce que seules les pièces requises soient masquées, optimisant ainsi la mise en page et l'expérience utilisateur.

Capturez les événements de Mousedown avec l'élément parent contenant des iframes interdomains: principes et limitations Capturez les événements de Mousedown avec l'élément parent contenant des iframes interdomains: principes et limitations Sep 20, 2025 pm 11:00 PM

Cet article explore le défi de capturer des événements de Mousedown sur des divs parents contenant des iframes interdomains. Le problème de base est que les politiques de sécurité du navigateur (politique d'origine même) empêchent l'écoute d'événements DOM directe sur le contenu IFRAME inter-domaine. Ce type de capture d'événements ne peut pas être réalisé à moins que le nom de domaine source IFRAME soit contr?lé et que COR soit configuré. L'article expliquera ces mécanismes de sécurité en détail et leurs limites aux interactions des événements et fourniront des alternatives possibles.

Implémentation de l'empilement vertical des éléments dans la disposition du flexion bootstrap: du c?té à la couche Implémentation de l'empilement vertical des éléments dans la disposition du flexion bootstrap: du c?té à la couche Sep 21, 2025 pm 10:42 PM

Lorsque vous utilisez Bootstrap pour la mise en page de la page Web, les développeurs rencontrent souvent le problème des éléments affichés c?te à c?te plut?t que d'empiler verticalement par défaut, en particulier lorsque le conteneur parent applique la disposition Flexbox. Cet article explorera ce défi de mise en page commun en profondeur et fournira une solution: en ajustant l'attribut de direction flexible du conteneur Flex à la colonne, en utilisant la classe d'outils Flex-Colonne de Bootstrap pour obtenir la disposition verticale correcte des balises H1 et des blocs de contenu tels que les formulaires, garantissant que la structure de page répond aux attentes.

Comment faire du texte enroulé autour d'une image en HTML? Comment faire du texte enroulé autour d'une image en HTML? Sep 21, 2025 am 04:02 AM

USECSSFLOATPROPERTYTOWRAPTextArnanImage: FloatleftFortExtontheRight, FloatRightFortExtontheLeft, AddmarginForspacing, etClearFloatStopReventLayEtLaySues.

Comment définir l'attribut Lang dans HTML Comment définir l'attribut Lang dans HTML Sep 21, 2025 am 02:34 AM

SetThelangAttributeInthehtmltagtospecifypagelanguage, par exemple, fran?ais; 2. usocodes comme "ES" ForSpanishor "FR" Forfrench;.

JavaScript Fonction externe Call Difficulté Analyse: Emplacement du script et spécification de dénomination JavaScript Fonction externe Call Difficulté Analyse: Emplacement du script et spécification de dénomination Sep 20, 2025 pm 10:09 PM

Cet article explore deux problèmes courants lors de l'appel des fonctions JavaScript externes dans HTML: un temps de chargement de script incorrect ne fait pas partie des éléments DOM, et la dénomination des fonctions peut entrer en conflit avec les événements ou les mots clés intégrés du navigateur. L'article fournit des solutions détaillées, y compris les emplacements de référence de script de peaufinage et les spécifications de dénomination des bonnes fonctions pour s'assurer que le code JavaScript est correctement exécuté.

Comment ajouter une info-bulle sur Hover en HTML? Comment ajouter une info-bulle sur Hover en HTML? Sep 18, 2025 am 01:16 AM

Usethetitleattributeforsimpletooltipsorcssforcustom-styledones.1.addtitle = "text" toanyelementfordtooltips.2.ForStyledToolTips, wraptheelementInacontainer, use.tooltipand.tooltiptextclasseswithcspositioning, pseudo-elelights, et vissibilitycccc

Comment créer un hyperlien vers une adresse e-mail dans HTML? Comment créer un hyperlien vers une adresse e-mail dans HTML? Sep 16, 2025 am 02:24 AM

Usemailto: inhreftocreateeemaillinks.startwithforbasiclinks, ajouter? Sujet = & body = forpre-fillutContent, andincludemultipleaddressorcc =, bcc = foradvancedOptions.

See all articles