Besoin d'une petite explication pour les getElementById svp

Résolu
bonjour a tous
je pense avoir compris le principe des getElementById

avec ce lien
https://www.w3schools.com/js/tryit.asp?filename=tryjs_output_dom

mais cela ne semble pas fonctionner chez moi

pour rappel j'ai donc un formulaire html et une page panier.js

je souhaiterais afficher sur ma page de formulaire certaines données
je pensais avoir réussi mais je m aperçois que cela entre en conflit des fois
donc autant bien faire les choses et surtout les comprendre

alors pour commencer dans mon fichier panier.js
j'ai repérer cette ligne

document.getElementById('livraison-detail').innerHTML = "<div class='row' style ='margin-bottom:5px;'><div class='col'></div><div class='col'style='text-align:center;background-color: #78b8df;'>Livraison </div><div class='col ' style='text-align:center;background-color: #78b8df;'>Méthode</div><div class='col' style='text-align:center;background-color: #78b8df;'> (" + nom_choix_livraison + ") </div><div class='col' style='text-align:center;background-color: #78b8df;'> " + prix_choix_livraison +" euro(s)</div></div>";


et je parviens a la récupérée de cette façon sur ma page du formulaire

<i id="livraison-detail"></i>

jusque la tout va bien même si je me demande pourquoi il y a un "i" devant l id
c est vrai que j aurais pu mettre un p et un </p>

donc d après ce que je peux comprendre cela est suffisant pour transmettre les données du panier vers le formulaire ?

une autre question
je vois aussi
un div avec id écrit de cette manière dans le code source sur lequel je m'inspire pour créer mon panier

<div>*Prix total: <b><span class="total-panier" id="prix_total">9.00</span> euros</b></div>
mais dans le panier.js je ne vois pas de document.getElementById('total-panier')
le seul endroit ou ce total-panier est visible c'est dans le code javascript ci dessous

Alors j'ai une troisième question cette partie ne concerne bien que pour le traitement des données et l envois des données par mail ?
<script>
function commander(nom,prenom,cp,email,commande,prix_total,message,ville,detail_livraison){
$.ajax({
url : 'mail.php',
type : 'GET', 
data : 'nom=' + nom + '&prenom=' + prenom + '&cp=' + cp + '&email=' + email + '&commande=' + commande + '&prix_total=' + prix_total + '&message=' + message + '&ville=' + ville + '&livraison=' + detail_livraison, 
dataType : 'html',
success : function(reponse){
if (reponse == "1"){
 MonPanier.clearpanier();
 afficherpanier(); 
 document.body.scrollTop = 0;
 document.documentElement.scrollTop = 0;
 $('#mymodal').modal('show'); 
}
if (reponse == "0"){$('#mymodal_erreur').modal('show');}
}
});
}
$('#commander').click( function(){
var nom = document.getElementById("nom").value;
var prenom = document.getElementById("prenom").value;
var cp = document.getElementById("cp").value;
var ville = document.getElementById("ville").value;
var email = document.getElementById("email").value;
var commande = JSON.stringify(panier);
var detail_livraison = document.getElementById("livraison-detail").innerHTML;
var prix_total = document.getElementById("prix_total").innerHTML;
var message = encodeURIComponent(document.getElementById("message").value);
commander(nom,prenom,cp,email,commande,prix_total,message,ville,detail_livraison);
});
</script>

5 réponses

  1. Contributeur Ambassadeur
    bonjour,
    si ta première question est "cela est suffisant pour transmettre les données du panier vers le formulaire", je pense que oui.

    dans ta deuxième question, je vois un mélange bizarre de "total-panier"et de "prix_total".

    pour ta troisième question, ce code appelle la page mail.php de ton site.
    0
    1. bonjour
      Merci pour les réponses
      mais je n'ai pas trop bien compris la réponse pour la deuxième questions

      dans ta deuxième question, je vois un mélange bizarre de "total-panier"et de "prix_total".
      0
      1. Contributeur Ambassadeur
        N'est-ce pas ceci ta deuxième question?
        <div>*Prix total: <b><span class="total-panier" id="prix_total">9.00</span> euros</b></div>
        mais dans le panier.js je ne vois pas de document.getElementById('total-panier')
        1
      2. @yg_beoui en effet pour avoir un id qui me donne un résultat je devrais retrouver quelque part un document.getElementById('total-panier')
        0
      3. Contributeur Ambassadeur
        @flexi2202Ce qui confirme que tu mélanges.
        Quel id vois-tu dans le code?
        0
    2. y a quand meme un truc qui m'échappe

      pourquoi ce code m'affiche bien le nombre d article dans mon panier
        <div class="col-md-12 mt-3" style="padding-left: 5px;padding-right: 5px;background-color: beige;">
                        Nombre de produit(s) dans le panier : <i id="countart_haut"></i> </div>


      alors que celui ci non
       <i id="countart_haut"></i>
      0
      1. Contributeur Ambassadeur
        Pris isolément, aucun de ces codes n'affiche aucun nombre.
        Tu ne donnes aucun contexte.
        Si ces deux éléments sont présents dans la même page, penses-tu que c'est une bonne idée de leur donner la même identité?
        0
    3. merci pour l aide

      non en arrière plan il y a un calcul qui est est fait sur la page panier.js et j'ai verifier avec la console.log

      donc c'est sur et certain que cela retourne quelque chose sur la page panier.js

      non c 'est juste pour l essai je ne mets pas les deux en même temps (chaque id est unique )
      Mais je voulais comprendre pourquoi lorsque je mets le premier j'ai un résultat et pas quand je le remplace par le code du deuxième

      mais je pense que j'ai compris
      0
      1. misère ces espaces , il n en faut pas , il faut faire très attention , voila pourquoi cela ne fonctionnait pas
        grrrrrrr
        0