Eu preciso de uma maneira de acrescentar HTML a um elemento de contêiner sem usar innerHTML. A razão pela qual eu não quero usar innerHTML é porque quando é usado assim:
element.innerHTML += htmldata
Ele funciona substituindo todo o html primeiro antes de adicionar o html antigo mais o novo html. Isso não é bom porque redefine a mídia dinâmica, como vídeos em flash incorporados ...
Eu poderia fazê-lo desta maneira, que funciona:
var e = document.createElement('span');
e.innerHTML = htmldata;
element.appendChild(e);
No entanto, o problema dessa maneira é que existe uma tag de extensão extra no documento agora que eu não quero.
Como isso pode ser feito então? Obrigado!
javascript
html
innerhtml
Prumo
fonte
fonte
Respostas:
Para fornecer uma alternativa (como o uso
DocumentFragment
não parece funcionar): Você pode simulá-lo iterando sobre os filhos do nó recém-gerado e anexá-los apenas.fonte
e.firstChild
. Em vez disso, verifica see
tem um filho e, se sim, mova esse filho para o elementoEstou surpreso que nenhuma das respostas mencionou o
insertAdjacentHTML()
método. Confira aqui . O primeiro parâmetro é onde você deseja que a string seja anexada e leva ("beforebegin", "afterbegin", "beforeend", "afterend"). Na situação do OP, você usaria "beforeend". O segundo parâmetro é apenas a string html.Uso básico:
fonte
Uncaught TypeError: undefined is not a function
!alnafie tem uma ótima resposta para esta pergunta. Eu queria dar um exemplo de seu código para referência:
Espero que isso seja útil para os outros.
fonte
atribuir os dados para div com o símbolo "+ =", você pode anexar dados, incluindo dados html anteriores
fonte
element.innerHTML += data
.É para isso que
DocumentFragment
se destina.document.createDocumentFragment
,.childNodes
fonte
(a)
? Isso é um erro de digitação?Como pescar e usar código estrito. Existem duas funções de pré-requisito necessárias na parte inferior desta postagem.
Adicione vários elementos (o espaço para nome precisa apenas estar no elemento pai):
Código reutilizável dinâmico:
fonte