11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour
J'écris un script qui prend tous les éléments <figure> à l'intérieur d'une balise <section> et change leur ordre selon certains critères passés en argument.

Pour l'instant j'ai le code suivant:

var list = document.getElementById(...);
var figures = list.getElementsByTagName('figure');
/* calcul de la table des éléments <figure> dans le bon ordre  */
/* dans un Array "figList" */
var newList = document.createElement('section');
for(var(i = 0; i < figList.length; i++) newList.appendChild(figList[ i ]);
list.innerHTML = newList.innerHTML;

Je trouve cette méthode un peu lourde.

Y a-t-il un moyen de changer directement l'ordre des <figure> sans passer par un élément de travail et des "innerHTML" ?

Merci de vos conseils
Modifié par PapyJP (25 Feb 2016 - 11:12)
Modérateur
Bonjour,

TU n'as en effet pas besoin, ni de créer une newList, ni de copier des innerHTML. appendChild déplace les éléments s'ils existent déjà dans le document. Du coup, il suffit de faire :


for (var i = 0; i < figList.length; i++) list.appendChild(figList[ i ]);


Amicalement,
J'avais essayé ça et j'obtenais des m..., mais ça doit être une autre cause.
Je vais essayer à nouveau.