Bonjour à toutes et à tous,
Je suis assez peu expérimenté en JS/DOM.
Je suis en train d’écrire un « source » qui, à partir de tables MySQL affiche, dans un <form> les données.
Comme l’utilisateur doit faire de nombreux choix en cascade, je crée à la volée les éléments de formulaire <select>, <input radios>, <input checkboxes>, <input buttons>… dans une <div> créée à cet effet.À chaque choix effectué je « détruit » les éléments créés, à l’aide de la fonction suivante (trouvée sur un forum)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 var conteneur = document.getElementById(idParent); var selection = document.createElement('select'); if (idSelect !== '') { selection.setAttribute('id', idSelect);}
Je me pose une question : est-il plus judicieux (en terme de rapidité d’exécution, de mémoire allouée, …) de détruire systématiquement les objets pour éventuellement les recréer presque à l’identique ou de modifier les propriétés des objets existants.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 function purge(CurrentNode) { try { //Récupération de tous les noeuds enfants while (CurrentNode.childNodes.length > 0) { //Si le premier enfant a des enfants appel récursif de la méthode if(CurrentNode.firstChild.childNodes.length > 0){ this.purge(CurrentNode.firstChild); } //Sinon on parcours ses propriétés pour supprimer les évènements lié aux objet, puis destruction de l'objet else{ var tempo = CurrentNode.firstChild ; var a = tempo.attributes, i, l, n; if (a) { l = a.length; for (i = 0; i < l; i += 1) { n = a[i].name; if (typeof tempo[n] === 'function') { tempo[n] = null; } } } tempo = null; CurrentNode.removeChild(CurrentNode.firstChild); } } } catch(e) { alert(e); } }
Merci et bonne journée.![]()
Partager