Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

116
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda