2010-03-15 3 views
0

Je voudrais cloner une étiquette en utilisant Javascript (sans utiliser de cadres externes comme jQueries, donc s'il vous plaît limiter la réponse à Javascript ordinaire)Le clonage d'une balise dans javascript (plaine)

Voici mon exigence. Dire que j'ai un div aléatoire comme suit dans le document,

<div id='anEmptyDiv' style="display:none"> 
    <div> 
     Lorem Ipsum 
    </div> 
</div> 

Et je devrais être en mesure de faire quelque chose comme cela,

var customDiv = document.getElementyById('anEmptyDiv'); 
var copyDiv = clone(customDiv); 
copyDiv.id = 'a_valid_id'; 
copyDiv.style.display = 'block'; 

Il y a une raison derrière cette question je. J'ai un tag DIV structuré que je veux utiliser plusieurs fois quand un événement se produit. Je veux la structure seule et je n'ai pas l'intention de créer l'arbre DOM à chaque fois. Est-ce possible en Javascript?

+0

si votre vide div agit comme un modèle, alors je proposerais vous jetez un coup d'oeil au projet Template TrimPath js. – Dapeng

Répondre

1

via http://www.w3schools.com/dom/dom_nodes_clone.asp

xmlDoc=loadXMLDoc("books.xml"); 

oldNode=xmlDoc.getElementsByTagName('book')[0]; 
newNode=oldNode.cloneNode(true); 
xmlDoc.documentElement.appendChild(newNode); 

//Output all titles 
y=xmlDoc.getElementsByTagName("title"); 
for (i=0;i<y.length;i++) 
{ 
document.write(y[i].childNodes[0].nodeValue); 
document.write("<br />"); 
} 

La fonction clé ici est cloneNode

+0

Parfait! C'est ce que je cherchais!! Merci! – bragboy

+0

pourquoi la downvote? l'OP a dit que c'était ce qu'il cherchait ... – marcgg

3

Vous pouvez essayer la fonction cloneNode:

var customDiv = document.getElementById('anEmptyDiv'); 
var copyDiv = customDiv.cloneNode(true); 
copyDiv.id = 'a_valid_id'; 
copyDiv.style.display = 'block';