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

96
Vistas
Agregar una <div class></div> que encierra otros elementos con JavaScript

Estoy editando un foro bastante primitivo y no me deja modificar el HTML. Solo puedo editar el CSS. Entonces, quiero ver si sería posible agregar una <div class""></div> en el HTML con JavaScript que encierra más de los elementos existentes.

El HTML actual es el siguiente:

 <div class="details"> <div class="avatar"> <img src="https://i.imgur.com/1r7oGBt.png"></div> <p><span class="u_title">None</span> <span class="u_rank"></span></p> <dl class="u_group"><dt>Group</dt> <dd>User</dd> </dl> <dl class="u_posts"><dt>Messages</dt> <dd>52</dd> </dl> <dl class="u_scoresystem rep_zero"><dt>Score System</dt> <dd>0</dd> </dl> <dl class="u_status"><dt>Estado</dt> <dd>Anónimo</dd> </dl> </div>

Y me gustaría que fuera algo como esto, es decir, usando <div class="overlay"> </div>:

 <div class="details"> <div class="avatar"> <img src="https://i.imgur.com/1r7oGBt.png"></div> <div class="overlay"> <p><span class="u_title">None</span> <span class="u_rank"></span></p> <dl class="u_group"><dt>Group</dt> <dd>User</dd> </dl> <dl class="u_posts"><dt>Messages</dt> <dd>52</dd> </dl> <dl class="u_scoresystem rep_zero"><dt>Score System</dt> <dd>0</dd> </dl> <dl class="u_status"><dt>Estado</dt> <dd>Anónimo</dd> </dl> </div> </div>

es posible?

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

0

Eso es fácil:

  1. Iterar sobre todos los elementos con details de clase.
  2. Para cada uno de esos elementos, desestructurar los hijos más allá del primer hijo en una variable.
  3. Crea el elemento circundante usando document.createElement .
  4. Agregue el elemento circundante.
  5. Agregue los elementos que reestructuró en 2. al nuevo elemento.

No intente resolver el problema copiando algunas cadenas HTML y usando innerHTML , ya que perderá cualquier detector de eventos potencialmente adjunto a los elementos que envuelva.

 const details = document.querySelectorAll('.details'); for (const detail of details) { const [ first, ...childrenToWrap ] = [...detail.children]; const div = document.createElement('div'); div.className = 'overlay'; detail.append(div); div.append(...childrenToWrap); }
 .overlay { background-color: orange; }
 <div class="details"> <div class="avatar"> <img src="https://i.imgur.com/1r7oGBt.png"></div> <p><span class="u_title">None</span> <span class="u_rank"></span></p> <dl class="u_group"><dt>Group</dt> <dd>User</dd> </dl> <dl class="u_posts"><dt>Messages</dt> <dd>52</dd> </dl> <dl class="u_scoresystem rep_zero"><dt>Score System</dt> <dd>0</dd> </dl> <dl class="u_status"><dt>Estado</dt> <dd>Anónimo</dd> </dl> </div>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Es muy fácil. Use document.createElement para crear el elemento, agregar atributos y agregarlo al elemento seleccionado.

 var myEl = document.createElement("div"); // Use "className" because JavaScript "class" is a reserved keyword. myEl.className = "myClass"; // Append it document.querySelector("div").appendChild(myEl);

Ejemplo de trabajo en vivo:

 var myEl = document.createElement("div"); // Use "className" because JavaScript "class" is a reserved keyword. myEl.className = "myClass"; // Append it document.querySelector("div").appendChild(myEl); if (!!myEl) { myEl.textContent = "You can append other attributes too!"; }
 <div> </div>

También puede agregarlo como un elemento principal:

 var currentEl = document.querySelector("div"); currentEl.outerHTML = `<div class="myClass">${currentEl.outerHTML}</div>`;

También puede agregar muchos otros atributos.

Lea más sobre createElement en Document.createElement() .

about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que necesitas algo como esto:

 let messages = 52; let score = 0; document.body.insertAdjacentHTML('afterbegin',` <div class="details"> <div class="avatar"> <img src="https://i.imgur.com/1r7oGBt.png"></div><div class="overlay"> <p><span class="u_title">None</span> <span class="u_rank"></span></p> <dl class="u_group"><dt>Group</dt><dd>User</dd></dl> <dl class="u_posts"><dt>Messages</dt><dd>${messages}</dd></dl> <dl class="u_scoresystem rep_zero"><dt>Score System</dt><dd>${score}</dd></dl> <dl class="u_status"><dt>Estado</dt><dd>Anónimo</dd></dl></div></div> `);

En el código anterior, como puede ver, puede insertar mensajes y calificar dinámicamente la cadena y también puede agregar el HTML dinámicamente usando JavaScript al cuerpo de su documento html.

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