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

111
Vistas
Javascript For loop appends same element once

This is to understand the logic of JS Loop. In the following code i expect that the <li> element will append 3 times inside the <ul> tag. So that i should get 3 <li> tag inside the <ul> tag. As per my understanding any actions inside the loop will work based on the condition. As per that I should get 3 blank <li> tag here. But i get only 1. Anyone can explain whats wrong on my approach and how should i need to write it. Thanks in Advance!

let ul = document.querySelector("ul");
let li = document.createElement("li");
for (i = 0; i <=3; i++) {
  ul.appendChild(li);
}
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

You need to create a new element each time. If you are appending the same element multiple times, it will move it in the DOM, but not clone it.

One simple solution is use cloneNode:

let node = document.createTextNode("😀")
for (i = 0; i <3; i++) 
  document.body.appendChild( node.cloneNode() )

Note:

Cloning a node copies all of its attributes and their values, including intrinsic (inline) listeners. It does not copy event listeners added using

about 4 years ago · Juan Pablo Isaza Denunciar

0

why

appendChild replace self element bug

solutions

  1. create new li inside the loop

const ul = document.createElement("ul");
// li = document.createElement("li");

for (i = 0; i < 3; i++) {
   const li = document.createElement("li");
   // console.log('i =', i, ul);
   ul.insertAdjacentElement('beforeend', li);
}
ul;
// <ul>​​<li>​</li>​<li>​</li>​<li>​</li>​</ul>​
      

  1. create all children with DOM string

const ul = document.createElement("ul");
let li = '';

for (i = 0; i < 3; i++) {
   li += '<li></li>';
}

ul.insertAdjacentHTML('beforeend', li);

ul;
// <ul>​​<li>​</li>​<li>​</li>​<li>​</li>​</ul>​
      

ref

https://developer.mozilla.org/en-US/docs/Web/API/Node/appendChild

https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML

https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentElement

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