Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

115
Vistas
javascript foreach with DOM

i'm very new to JS so be nice haha, but i'm trying to create a table of contents on a page using the DOM.

const h2 = document.querySelectorAll('h2');
const toc = document.querySelector('#toc')

h2.forEach(heading => {
    toc.innerHTML = `<li><a href="">${heading}</a></li>`
})

it's not working how i would expect tbh. any help is appreaciated, i'm probably just being dumb

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

I think something like this should work! Here's what I changed to get it to work:

  • Use += instead of = for innerHTML. If you just use =, every time the forEach runs, it replaces the content. You're trying to create a list, so you want it to add on.
  • Get the innerText from heading. heading is an element, so you have to go into it and get its text, or else what you display isn't going to look right.

const h2 = document.querySelectorAll('h2');
const toc = document.querySelector('#toc')

h2.forEach(heading => {
  toc.innerHTML += `<li><a href="">${heading.innerText}</a></li>`
})
<ul id="toc"></ul>

<h2>One</h2>
<h2>Two</h2>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Regarding @Utkarsh Dixit comment: This is much more performant and is creating the same result.

const h2 = document.querySelectorAll('h2');
const toc = document.querySelector('#toc')

h2.forEach(heading => {
  // Create two elements
  const li = document.createElement('li')
  const anchor = document.createElement('a')

  // Assign the text content to the anchor
  anchor.textContent = heading.textContent

  // Add them together toc > li > anchor
  li.append(anchor)
  toc.append(li)
})
<ul id="toc"></ul>

<h2>One</h2>
<h2>Two</h2>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda