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

176
Vistas
¿Por qué appendChild no funciona en la etiqueta de plantilla <li>?

Tengo este contenido JS y HTML:

 const parent = document.querySelector('#parent'); const choices = parent.dataset.choices.split(",") const childTplt = document.querySelector('#children'); for (c of choices) { let child = childTplt.content.cloneNode(true); child.appendChild(document.createTextNode(c)); parent.appendChild(child); }
 <ul id="parent" data-choices="one,two,three"> </ul> <template id="children"> <li> </li> </template>

y terminar con esto en mi página:

 <ul id="parent" data-choices="one,two,three"> <li> </li> one <li> </li> two <li> </li> three</ul>

¿Por qué ese contenido de texto termina como hermano de <li> y no como un hijo real (dentro de <li></li> ?

¡Gracias por tu contribución!

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

0

La propiedad .content de un elemento de plantilla es un fragmento de documento; no es el elemento <li> . En su caso, la plantilla es simple, por lo que solo puede hacer referencia al primer elemento secundario del fragmento:

 let child = childTplt.content.firstElementChild.cloneNode(true);
about 4 years ago · Juan Pablo Isaza Denunciar

0

esto funcionó para mí

 function function1() { var ul = document.getElementById("list"); var li = document.createElement("li"); li.appendChild(document.createTextNode("Four")); li.setAttribute("id", "element4"); ul.appendChild(li); alert(li.id); }
about 4 years ago · Juan Pablo Isaza Denunciar

0

En el ciclo anterior, está agregando c (uno, dos, tres), luego agrega una versión clonada de lo que está dentro de #children .

 for (c of choices) { let child = childTplt.content.cloneNode(true); child.appendChild(document.createTextNode(c)); //will append 'one' parent.appendChild(child); //will append <li></li> }

Puede reemplazarlo con este bucle y hará lo que está buscando:

 for (c of choices) { let li = document.createElement('li'); li.append(c); parent.append(li); }
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