Je crée un panier pour un site e-commerce et je mets à jour le prix total de l'article par rapport à la quantité, mais j'ai une erreur ?
function updatetotal () { const cartContent = document.getElementsByClassName("cart-content")[0]; const cartBoxes = cartContent.getElementsByClassName("cart-box"); let total = 0; for (let i = 0; i < cartBoxes.length;i++) { const cartBox = cartBoxes[i]; const priceElement = cartBox.getElementsByClassName("cart-price")[0]; const quantityElement = cartBox.getElementsByClassName("cart-quanity"); let price = parseFloat(priceElement.innerHTML.replace('$','')) const quantity = quantityElement.value; total+= price * quantity; document.getElementsByClassName("total-price")[0].innerText = '$' + total; } }
J'ai presque tout essayé. Je pense que je fais peut-être une petite erreur quelque part ?
Soit le nom de la classe d'élément est mal écrit (peu probable puisque vous l'avez déjà vérifié 100 fois haha), soit vous essayez d'y accéder avant le rendu.
Vérifiez si vous pouvez déplacer le script sous la balise HTML contenant class="cart-box", de préférence avant la balise de fermeture
.Essayez d'exécuter updatetotal() une fois le DOM complètement chargé :
Si vous effectuez le rendu d'un élément via Ajax après le chargement complet du DOM, vous pouvez essayer cette astuce : écrivez une fonction qui vérifie si l'élément existe, sinon, attendez quelques secondes et appelez à nouveau la fonction de manière récursive :
La dernière solution n’est certainement pas la meilleure, mais elle fait le travail.