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

205
Visualizações
HTMLElement.innerHTML agregando atributos a la etiqueta de cierre </span>, y no sé por qué

Estoy usando Angular 13 con una tubería para reformatear el texto en un div contenteditable . Todo funciona bien hasta que innerHtml se reemplaza con el nuevo código. Los atributos del último nodo secundario (una etiqueta de span ) se agregan al interior de la etiqueta de span de cierre. No tengo idea de por qué sucede esto.

Estoy usando TypeScript, con Angular 13, en Chromium (MS Edge) v97.0.1072.76 y Firefox v95.0.

Aquí hay un ejemplo:

 reformatContent(event: Event) { const el = (event.target as HTMLElement); const originalHtml = el.innerHTML; console.log(originalHtml); // "Some text <span id="someTextId" class="someTextClass">More Text</span> const newHtml = this.reformatText(originalHtml); console.log(newHtml); // "Some text <span id="someTextId" class="someTextClass someNewClass">More Text</span> <-- this is ok, what I expected. el.innerHTML= newHtml; console.log(el.innerHTML); // "Some text <span id="someTextId" class="someTextClass someNewClass">More Text</span id="someTextId" class="someTextClass someNewClass"> <-- why is this happening??? }

Solo quiero dejar claro que el HTML originalHtml incluye la etiqueta de cierre </span> . Así que no creo que el navegador esté tratando de cerrar la etiqueta.

Editar por error tipográfico.

Edición 2: actualicé el código original para errores tipográficos y para que quede más claro cómo estaba obteniendo el HTML interno. No pensé que ahí estaba el problema, pero aparentemente es así, porque esto funciona:

 reformatContent(event: Event) { const e = (event.target as HTMLElement); const el = document.getElementById(e.id); const originalHtml = el.innerHTML; console.log(originalHtml); // "Some text <span id="someTextId" class="someTextClass">More Text</span> const newHtml = this.reformatText(originalHtml); console.log(newHtml); // "Some text <span id="someTextId" class="someTextClass someNewClass">More Text</span> <-- this is ok, what I expected. el.innerHTML= newHtml; console.log(el.innerHTML); // "Some text <span id="someTextId" class="someTextClass someNewClass">More Text</span> <-- now it works }

No entiendo por qué la forma original de obtener el elemento causó este problema. Lo arreglé, pero realmente me gustaría entender qué está pasando aquí.

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

0

¿Qué es la función reformatear texto?

 this.reformatText(originalHtml)

Esta función está cambiando su lapso y su error es de aquí.

Puede decir que su resultado es correcto, pero está utilizando console.log en una variable no válida (originalHtml)

¿Qué es y dónde está originalHtml?

Pero, en general, lo que sé, su problema se debe a esta línea:

 const newHtml = this.reformatText(originalHtml);
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