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

95
Views
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 answers
Answer question

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 Report

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 Report

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 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!