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.
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);}
À 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
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); }
	}
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.
Merci et bonne journée.