Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

323
Views
How can I remove html elements that are nested into each other?

I have an html structure like this:

<p>Hello</p>
<h1>ah</h1>
<child>
    <p>Haha</p>
    <child>
      <p>Hihi</P>
    </child>
</child>
<child>
<h4>Hello</h4>
</child>
<h3>Hello</h3>

Goal:

My Goal is to remove all child tags from the DOM to receive this:

<p>Hello</p>
<h1>ah</h1>
<h3>Hello</h3>

What I tried:

const html = document.createElement('div');
//This is the HTML I pasted above.
html.innerHTML = this.item.Body;
let childTags = html.getElementsByTagName('child');

for (let i = 0; i < childTags.length; i++) {
  let childTag = childTags[i];
  childTag.remove();
}

this.item.Body = html.innerHTML;

My Problem:

The problem that I am having is that getElementsByTagName finds the nested tag that is already removed when I remove the parent child tag, this makes it so the for loop doesn't work.

Any help appreciated.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

I solved it myself, and it was embarassingly easy.

I had to make a recursive function.

removeChildComponents() {
const html = document.createElement('div');
html.innerHTML = this.item.Body;

let childTag = html.getElementsByTagName('child');
if (childTag.length > 0) {
        childTag[0].remove();
}

this.item.Body = html.innerHTML;

const recursionHandler = html.getElementsByTagName('child')
if (recursionHandler.length > 0) {
        this.removeChildComponents();
};
};

about 4 years ago · Juan Pablo Isaza Report

0

Here you go. Firstly you getElementsByTagName that returns an HTMLCollection which you convert into an array using Array.prototype.slice. Then forEach child i.e item in array, you .remove() it from DOM.

Array.prototype.slice.call(document.getElementsByTagName('child')).forEach(child => child.remove());
<p>Hello</p>
<h1>ah</h1>
<child>
  <p>Haha</p>
  <child>
    <p>Hihi</p>
  </child>
</child>
<child>
  <h4>Hello</h4>
</child>
<h3>Hello</h3>

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!