Eu tenho o seguinte html:
<body>
<span class="comment">
EXAMPLES:
<p><i>Example 1</i> - <a href="https://example.com/1">https://example.com/1</a> - Jan 2020 (2 comments)</p>
<p><i>Example 2</i> - <a href="https://example.com/2">https://example.com/2</a> - Jun 2022 (13 comments)</p>
<div class="reply"><p><u><a href="reply?id=12323" rel="nofollow">reply</a></u></p></div>
<p><i>Example 3</i> - <a href="https://example.com/3">https://example.com/3</a> - Apr 2023 (33 comments)</p>
</span>
</body>
Estou tentando obter o innerHTML
da .comment
classe, exceto o .reply
div.
Observe que não é garantido que a .reply
aula seja a última.
Basicamente, quero obter apenas:
EXAMPLES:
<p><i>Example 1</i> - <a href="https://example.com/1">https://example.com/1</a> - Jan 2020 (2 comments)</p>
<p><i>Example 2</i> - <a href="https://example.com/2">https://example.com/2</a> - Jun 2022 (13 comments)</p>
<p><i>Example 3</i> - <a href="https://example.com/3">https://example.com/3</a> - Apr 2023 (33 comments)</p>
Não consigo descobrir como posso excluir um dos filhos irmãos.
Eu sei que posso pegar as crianças, exceto a .reply
turma, usando o seguinte:
document.querySelectorAll(`.comment > :not(.reply)`)
Mas este não é o innerHTML
. É um NodeList
:
Existe uma maneira de obter um novo elemento combinado NodeList
que eu possa invocar innerHTML
?
Encontrei uma pequena pergunta semelhante aqui:
Javascript .innerHTML, mas excluindo div interno
mas essa questão é sobre como extrair uma string específica e as soluções parecem feias. Existe uma maneira melhor?
Faça um clone profundo do
comment
nó e remova -reply
o antes de recuperarinnerHTML
:Observe que adicionei a
</font>
tag de fechamento ausente ao seu exemplo. Sem isso, a abertura incomparável<font>
permaneceria noinnerHTML
.