Estou usando o AJAX para anexar dados ao elemento div, onde preencho a div do JavaScript, como posso acrescentar novos dados à div sem perder os dados anteriores encontrados na div?
javascript
Adham
fonte
fonte
Respostas:
Tente o seguinte:
fonte
div
conter elementos com ouvintes de eventos ou entradas com texto inserido pelo usuário. Eu recomendo a resposta de Chandu .Usando appendChild:
Usando innerHTML:
Essa abordagem removerá todos os ouvintes dos elementos existentes, conforme mencionado por @BiAiB. Portanto, tenha cuidado se você planeja usar esta versão.
fonte
createTextNode
não funcionará se você estiver carregando HTML. Se você quisesse adicionar itens da lista, por exemplo, isso não funcionaria. Isso é bastante limitador.Cuidado
innerHTML
, você meio que perde algo ao usá-lo:É equivalente a:
O que destruirá todos os nós dentro do seu
div
e recriará novos. Todas as referências e ouvintes aos elementos dentro dele serão perdidas .Se você precisar mantê-los (quando tiver anexado um manipulador de cliques, por exemplo), será necessário anexar o novo conteúdo às funções DOM (appendChild, insertAfter, insertBefore):
fonte
appendChild
foi feita por @Cybernatedocument.createTextNode()
.Se você deseja fazê-lo rapidamente e não deseja perder referências e ouvintes, use: .insertAdjacentHTML () ;
"Ele não reanalisa o elemento em que está sendo usado e, portanto , não corrompe os elementos existentes dentro do elemento. Isso evita o passo extra da serialização, tornando-o muito mais rápido do que a manipulação direta interna do HTML."
Suportado em todos os navegadores principais (IE6 +, FF8 +, Todos os outros e dispositivos móveis): http://caniuse.com/#feat=insertadjacenthenthtml
Exemplo de https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
fonte
insertAdjacentElement()
einsertAdjacentText()
.Se você estiver usando o jQuery, poderá usá
$('#mydiv').append('html content')
-lo e ele manterá o conteúdo existente.http://api.jquery.com/append/
fonte
Mesmo isso irá funcionar:
fonte
Solução IE9 + (Vista +), sem criar novos nós de texto:
No entanto, isso não funcionou muito bem para mim, pois eu precisava de uma nova linha após cada mensagem, então meu DIV se transformou em um UL estilizado com este código:
De https://developer.mozilla.org/pt-BR/docs/Web/API/Node/textContent :
fonte
Você pode usar o jQuery. o que torna muito simples.
basta baixar o arquivo jQuery e adicionar o jQuery ao seu HTML
ou você pode acessar o link on-line:
e tente o seguinte:
fonte
O método a seguir é menos geral que outros, no entanto, é ótimo quando você tem certeza de que seu último nó filho da div já é um nó de texto. Dessa forma, você não criará um novo nó de texto usando a
appendData
Referência MDN AppendDatafonte
Por que não usar setAttribute?
Em seguida, você pode obter esses dados:
fonte
script java
jquery
Use
.html()
sem argumentos para ver que você inseriu. Você pode usar o console do navegador para testar rapidamente essas funções antes de usá-las no seu código.fonte