2013-06-03 5 views
0

Je veux envelopper ou remplacer le premier div et p qui est dans un div appelé entrée de contenu:Wrap première div d'un div

var outer = document.getElementById(".entry-content div"); 
outer.innerHTML = "<div id='wrap'>"+outer.innerHTML+"</div>" 

et

var outer = document.getElementById(".entry-content p"); 
outer.innerHTML = "<script type='text/javascript'>window.location = '"+outer.innerHTML+"'</script>" 

sortie (wrap):

<div class="entry-content"> 
<div><div id="wrap">lala</div></div> 
<p><script type="text/javascript">window.location = "http://"</script></p> 
</div> 

ou la meilleure sortie serait (wrap et remplacer):

<div class="entry-content"> 
<div id="wrap">lala</div> 
<script type="text/javascript">window.location = "http://"</script> 
</div> 

Nous vous remercions de votre aide!

+0

'div' de .entry contenu n'est pas une carte d'identité valide. Pourquoi pensez-vous que vous pourriez utiliser 'getElementById' avec quelque chose qui ressemble à un sélecteur? De toute façon, on dirait que vous voulez supprimer ** les premiers éléments 'div' et' p' mais gardez leur contenu, n'est-ce pas? L'emballage est quelque chose de différent. –

+0

Jetez un oeil à ma réponse ci-dessous. Puisque vous n'avez pas fourni une version «avant» de votre code HTML, je ne suis pas sûr de ce que vous voulez vraiment faire. Si cela ne vous aide pas, faites le moi savoir et mettez à jour votre question avec une meilleure description de votre problème. –

Répondre

1

Il semble que vous souhaitiez supprimer l'élément mais conserver son contenu. "Unwrap" si vous voulez l'appeler comme ça.

Cela peut être fait avec un peu de manipulation DOM:

function unwrap(element) { 
    // insert all the element's children *after* the element itself 
    var parent = element.parentNode; 
    var children = element.childNodes; 
    var before = element.nextSibling; 

    // reverse iteration always inserting the previous sibling before 
    // the next one 
    for (var i = children.length - 1; i > -1; i--) { 
     before = parent.insertBefore(children[i], before); 
    } 

    // remove the element 
    parent.removeChild(element); 
} 

tout ce que vous avez alors à faire est de passer une référence à l'élément que vous souhaitez supprimer la fonction.

DEMO

Si vous voulez vraiment remplacer l'élément cependant, alors il vous suffit de déplacer tous les nœuds enfants au nouvel élément et remplacer l'ancien élément par le nouveau. J'appelle la fonction « RÉEMBALLAGE » ici (parce que « remplacer » n'indique pas que le contenu est copié):

function rewrap(element, new_element) { 
    // append all the element's children to the new element 
    while (element.firstChild) { 
     new_element.appendChild(element.firstChild); 
    } 

    // replace old element with new 
    element.parentNode.replaceChild(new_element, element); 
} 

DEMO

Questions connexes