Document.write // document.getElementById()

Résolu
Bonjour,

Dans un éditeur en ligne, j'ai un message d'avertissement lorsque je teste un petit script comme celui-là:
var x = "4", y = "3";
total = x + y;

document.write(total);

document.write can be a form of eval
ok en me renseignant un peu, document.write comporte certains risques liés à la sécurité (sur un site en production) et donc il est recommandé d'utiliser document.getElementById() à la place.

Mais je ne parviens pas à intégrer cette syntaxe dans mon script de calcul de 2 valeurs.
Comment réécrire le code avec document.getElementById()

var x = 4;
var y = 3;

var total = x + y;
document.getElementById(total)

Ceci ne fonctionne pas, je suppose que je suis à côté de la plaque...

Merci

Configuration: Windows / Chrome 87.0.4280.88

1 réponse

  1. Modérateur
    Bonjour,

    document.getElementById .. sert, comme son "nom" le laisse entendre.. que ça sert à récupérer un élément via son id ....
    ça ne remplace en aucun cas le write ....

    Par contre,
    Tu mets un ID à un élément html de ta page ( une div par exemple )
    Tu récupères cet élément via son ID en javascript
    Et tu écris le contenu voulu dans cet élément
    Voir exemples donnés ici : https://www.w3schools.com/js/js_htmldom_html.asp

    0
    1. Merci pour votre réponse, je comprends, d'ailleurs j'avais visité la page w3schools que vous proposez.
      Donc maintenant, est-ce que document.getElementById peut afficher le résultat d'une opération stockée dans une variable ?
      var x = 4;
      var y = 3;
      
      var total = x + y;
      document.getElementById("res").innerHTML = "total";

      <p id="res"></p>

      Car ce code écrit total entre les balises <p> mais la variable total qui est égal à x = y soit 7
      0
    2. Modérateur
      @nicodakQuand tu mets des quotes ... c'est que tu écris du texte ....
      Donc là : "total" .. c'est le TEXTE total qui s'écrit
      Si tu veux utiliser une variable c'est sans les quotes
      document.getElementById("res").innerHTML = total;
      
      0
    3. @jordane45Raaaah !! Je le savais ça en plus !
      Merci beaucoup pour votrre réponse et votre réactivité.
      0
    4. @jordane45Je reviens à la charge pour la mise en forme du résultat.
      Actuellement le résultat est affiché comme ceci
      331445128544

      Sans que l'on puisse reconnaitre les différentes valeurs. Alors j'ai essayé ça mais le résultat n'est pas meilleur
      var a="33", b="14", c="45", d="1", e="28", f="5", g="44";
      
      var loto = a + b + c + d + e + f + g;
      document.getElementById("resultat").innerHTML = loto.split('').join(' ');

      3 3 1 4 4 5 1 2 8 5 4 4

      Comment obtenir 33 14 45 1 28 5 44 ?

      Merci beaucoup !
      0
    5. Modérateur
      @nicodak
      var loto = a + " " + b + " " + c +  " "  +d + " " + e + " " + f +  " " + g;
      document.getElementById("resultat").innerHTML = loto ;
      

      ou encore
      var loto = [a,b,c,d,e,f,g];
      document.getElementById("resultat").innerHTML = loto.join(' ');
      


      Par contre.... en général, sur ce forum, une discussion concerne UN souci.
      Réouvrir une discussion classée comme RESOLUE pour y poser une nouvelle question n'est pas la bonne pratique.
      Je t'invite à remettre cette discussion en résolue.. puis, si tu as de nouveaux besoins, d'ouvrir une nouvelle discussion propre à chacun d'eux.
      Bonne soirée.
      0