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

148
Visualizações
Llamar a una función dentro de un HTML interno
.then(function renderTree (data){ Object.entries(data).map((item, index) => { let container = document.querySelector(".container") let li = document.createElement("li") li.id = `${item[1].id}` container.appendChild(li) let span = document.createElement("span") span.innerHTML = `${item[1].name}` li.appendChild(span) let ul = document.createElement("ul") ul.innerHTML = renderTree(item[1].children) li.appendChild(ul) // gerarLi(item[1].id, item[1].name) }) })

Estoy tratando de continuar con los niños dentro de un <ul> , la continuación está en:

 ul.innerHTML = renderTree(item[1].children)

Pero este código no funciona, mi index.html regresa como:

 <ul>undefined</ul>

¿Qué puedo hacer para esto?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Hice mis propios data prueba y jugué un poco con su código. Estos fueron los puntos que encontré:

  • Su función recursiva renderTree() siempre colocó elementos directamente en el div .container . Esto solo debería suceder para la llamada externa.
  • No return nada de tu función renderTree() .

Cambié la función de modo que ahora devuelve una cadena HTML para colocarla dentro de una estructura <ul> . Esta función ahora se puede llamar recursivamente de forma segura.

 const data={abc:{id:"first",name:"number one"}, def:{id:"second",name:"el segundo"}, ghi:{id:"third",name:"der dritte", children:{jkl:{id:"fourth",name:"child one"},mno:{id:"fifth",name:"child two"}}}}; function renderTree(data){ // returns an HTML string for a <UL> DOM element return Object.values(data).map(({id,name,children}) => { let li = document.createElement("li"); li.id = id; let span = document.createElement("span"); span.innerHTML = name; li.appendChild(span); let ul = document.createElement("ul"); if (children){ ul.innerHTML = renderTree(children); li.appendChild(ul); } return li.outerHTML; }).join("\n"); } document.querySelector(".container").innerHTML=renderTree(data);
 span {color:blue}
 <ul class="container"></ul>

También cambié Object.entries() a Object.values() ya que nunca usas las claves de los objetos procesados.

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