Lorsque l'on veut modifier le contenu d'un document Web (et c'est principalement la finalité de JavaScript), certaines méthodes ou propriétés sont largement connues et utilisées.
En particulier, l'utilisation de la propriété innerHTML est très répandue, au point que cette propriété, à l'origine à l'origine spécifique à Internet Explorer, s'est généralisée à tous les navigateurs et a même fini par être intégrée aux spécifications HTML5.
On connait aussi les méthodes createElement(), createTextNode(), appendChild ou insertBefore().
L'ensemble de ces fonctionnalités permettant de faire beaucoup de choses. Mais pas tout, comme s'en est récemment rendu compte l'un de nos visiteurs.
Il souhaitait ajouter des champs dans une zone de son formulaire. Pour cela, il eut l'idée de récupérer la valeur de innerHTML, de la concaténer avec le champ supplémentaire puis affecter le nouveau contenu à innerHTML.
La technique est correcte en soi et fonctionne globalement bien. Globalement seulement car il y a un hic : en effet, si l'utilisateur avait déjà rempli des champs de cette partie du formulaire, cela n'avait pas eu d'impact sur le HTML et donc la réaffectation par innerHTML vidait les champs précédemment remplis.
Pour pallier ce désagrément, on aurait pu envisager deux alternatives possibles : soit faire une boucle sur les champs déjà remplis, affecter l'attribut value (ou selected pour les
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.