Niveau
..........
En rapport...

Cloner un élément du dom

Pour dupliquer un objet Dom (un div par exemple) vous devez utiliser cloneNode.

javascript
var o=document.getElementById('mondiv');
var neWo=o;

Dans cet exemple, si on modifie “neWo” (par exemple on change son innerHTML), on modifiera aussi “o” qui lui même modifiera le div qui a pour id “mondiv”.
Ce n'es pas forcement le comportement voulu. Pour que neWo soit une copie indépendante du div “mondiv”, il faut cloner ce div comme ceci :

javascript
var o=document.getElementById('mondiv');
var neWo=o.cloneNode(true);
//Ici, neWo est une copie indépendante de du div "mondiv". Si vous changez le innerHTML de neWo le div ne sera pas affecté.
cloneNode() prend un paramètre : true ou false (par défaut).
Si vous définissez le paramètre à true, le clonage se fera de façon récursive dans votre objet.
A false, il ne sera cloner que la 1ere profondeur de l'objet.

Un objet cloné avec cloneNode n'est pas présent dans le dom par défaut. Il faut donc l'ajouter au dom avec appendChild.
exemple :

javascript
document.getElementById('toto').appendChild(neWo);
//ceci ajoutera neWo dans l'objet qui a pour id "toto".

Cloner un objet javascript

Il se peu aussi que vous ailliez besoin de cloner un objet javascript.
Exemple :

javascript
var o = new Date(2007,1,18);
var neWo = o;

Ici, si vous modifiez “neWo”, “o” sera aussi impacté par la modification car ils sont tous les deux liés.
Mais il est possible de faire en sorte que “neWo” soit une copie indépendante de “o”. Pour cela, utilisez la fonction suivante :

javascript
function objClone(what,rec) {
    for (var i in what) {
       if ((rec) && (typeof what[i]=="object"))
           this[i] = new objClone(what[i],true);
       else
           this[i] = what[i];
    }
}

Exemple :

javascript
var o = new Date(2007,1,18);
var neWo = new objClone(o,true);
//ici neWo sera une copie indépendante de o
objClone() prend deux paramètres :



18/01/2007 09:07 -

iDo –