11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je programme actuellement en JavaScript, et une question me taraude un peu...

Jusque là, quand je voulais supprimer un élément de son contenu, je faisais quelque chose de clair, net, bourrin...
element.innerHTML = '';
C'est court, ça fonctionne... Mais est-ce la meilleure solution... On trouve dans le framework Dojo une méthode destroy(), donc c'est décidé, je l'utilise =)
dojo.destroy(element);
Ca me supprime mon noeud, super ! J'ai pas l'air de pouvoir retrouver les enfants ni le noeud via la console, mais je doute quand même encore ! (Car je ne les retrouvais pas non plus à la bourrin...)

Donc, vaut-il mieux les supprimer proprement ? Est-ce que ça fait une différence ?

Et surtout, je voulais savoir s'il fallait supprimer tous les noeuds enfants avant de supprimer le noeud que je veux détruire à l'aide d'une fonction récursive ?
function destroyRecursive(obj) {
    while (obj.firstChild)
        destroyRecursive(obj.firstChild);
    dojo.destroy(obj);
}

Modifié par Gothor (17 Feb 2012 - 16:36)
Hello,

En DOM de base il y a Node.removeChild:
https://developer.mozilla.org/en/DOM/Node.removeChild
Aucune idée des différences effectives entre ça et element.innerHTML="".

Ça serait intéressant de voir ce que les libs JS (dojo, jQuery, etc.) font au juste dans leurs méthodes de suppression de nœud DOM.

Sur le fait d'itérer sur tous les nœuds descendants pour les supprimer un par un: je vois pas trop l'intérêt ou la nécessité.