5

I know there is a solution with Jquery called unwrap, but I am writing "raw" JavaScript. I didn't find any solution without jQuery.

I'd like to remove a div like so:

<div><div id="mydiv">Important text here</div></div>

After removal of "mydiv":

<div>Important text here</div>

What should I do, I'd like to know the theory.

Thanks in advance.

funerr
  • 7,212
  • 14
  • 81
  • 129

3 Answers3

13

shouldn't this line work

 document.getElementById("mydiv").outerHTML = document.getElementById("mydiv").innerHTML

See this JSBin Example (inspect the element)

Moritz Roessler
  • 8,542
  • 26
  • 51
0

You need to use removeChild method for that:

var divToRemove = document.getElementById('mydiv').;
var tmpStr = divToRemove.innerHTML;
var parent = divToRemove.parentNode;
parent.removeChild(divToRemove);
parent.inerHTML(tmpStr);
antyrat
  • 27,479
  • 9
  • 75
  • 76
  • This will completely rewrite the parent innerHTML which isn't good. (I may have more text in-between) – funerr Jul 20 '12 at 13:37
0

Try

​var el = document.getElementById('mydiv');
var text = el.innerText; //or el.innerHTML
    el.parentNode.innerHTML = text;
​

This would replace the html of mydiv's parent with the content of mydiv.

Gavin
  • 6,284
  • 5
  • 30
  • 38