Bonjour, actuellement je cherche à créer et insérer plusieurs éléments HTML au check d'un bouton radio.
J'ai une première version de ma fonction qui marche mais qui se répète beaucoup, j'aimerais factoriser ce code (dans une boucle for par exemple).
Extrait du code HTML concerné:
Extrait de la fonction qui marche mais qui contient du code répété:
Déclaration du tableau dans lequel j'ai les éléments sur lesquel je souhaite boucler + Tentative d'une fonction avec boucle for qui ne fonctionne pas (pas de message dans la console rien):
Une idée svp?
J'imagine que la solution est évidente... En tout cas pas pour moi ;D.
Je remercie d'avance ceux qui voudrons bien m'aider.
Modifié par Knhfr (07 Aug 2020 - 21:15)
J'ai une première version de ma fonction qui marche mais qui se répète beaucoup, j'aimerais factoriser ce code (dans une boucle for par exemple).
Extrait du code HTML concerné:
<input type="checkbox" class="custom-control-input" id="customCheck1" onclick="editerPage()">
Extrait de la fonction qui marche mais qui contient du code répété:
function editerPage() {
var boutonTitre = document.createElement('button');
boutonTitre.id = 'titre';
boutonTitre.innerHTML = 'Titre de l\'onglet de la page';
boutonTitre.setAttribute('onclick', 'titre()');
var boutonH1 = document.createElement('button');
boutonH1.id = 'h1';
boutonH1.innerHTML = 'Titre h1 de la page';
boutonH1.setAttribute('onclick', 'h1()');
var boutonP = document.createElement('button');
boutonP.innerHTML = 'Paragraphe de la page';
boutonP.id = 'p';
boutonP.setAttribute('onclick', 'p()');
var inputCouleurH1 = document.createElement('input');
inputCouleurH1.innerHTML = 'Changer la couleur du titre h1';
inputCouleurH1.id = 'input';
inputCouleurH1.setAttribute('onclick', 'couleurH1()');
inputCouleurH1.setAttribute('type', 'color');
document.body.appendChild(boutonTitre);
document.body.appendChild(boutonH1);
document.body.appendChild(boutonP);
document.body.appendChild(inputCouleurH1);
}
Déclaration du tableau dans lequel j'ai les éléments sur lesquel je souhaite boucler + Tentative d'une fonction avec boucle for qui ne fonctionne pas (pas de message dans la console rien):
var bouton = ['title', 'h1', 'p', 'input']
function editerPage() {
for ( i = 0; i >= bouton.length; i++ ) {
bouton[i] = document.createElement('button');
bouton[i].innerHTML = 'Création du ' + bouton[i];
bouton[i].id = '"' + bouton[i] + '"';
bouton[i].setAttribute('onclick', '"' + bouton[i] + '"');
document.body.appendChild(bouton[i]);
}
}
Une idée svp?
J'imagine que la solution est évidente... En tout cas pas pour moi ;D.
Je remercie d'avance ceux qui voudrons bien m'aider.
Modifié par Knhfr (07 Aug 2020 - 21:15)
Cependant, il existe des techniques simples et efficaces qui permettent d'éviter les répétitions tout en clarifiant le code. Dans ta solution, tu évites effectivement les répétitions, mais ton code reste en un seul bloc. Découper son code permet de le rendre plus clair et plus simple. Cela empêche également d'ajouter des bugs lors de changements futurs. Chaque partie étant indépendante, cela limite les effets de bord.