Estoy usando AJAX para agregar datos al elemento div, donde lleno el div desde JavaScript, ¿cómo puedo agregar nuevos datos al div sin perder los datos anteriores encontrados en div?
javascript
Adham
fuente
fuente
Respuestas:
Prueba esto:
fuente
div
contenga elementos con escuchas de eventos o entradas con texto ingresado por el usuario. Recomiendo la respuesta de Chandu .Usando appendChild:
Uso de innerHTML:
este enfoque eliminará a todos los oyentes de los elementos existentes mencionados por @BiAiB. Por lo tanto, tenga cuidado si planea usar esta versión.
fuente
createTextNode
no funcionará si está cargando HTML. Si quisiera agregar elementos de la lista, por ejemplo, esto no funcionaría. Eso es bastante limitante.Cuidado
innerHTML
, pierdes algo cuando lo usas:Es equivalente a:
Lo cual destruirá todos los nodos dentro de usted
div
y recreará otros nuevos. Se perderán todas las referencias y oyentes a los elementos que contiene .Si necesita conservarlos (cuando ha adjuntado un controlador de clics, por ejemplo), debe agregar los nuevos contenidos con las funciones DOM (appendChild, insertAfter, insertBefore):
fuente
appendChild
@Cybernate hizo la forma correcta de hacerlodocument.createTextNode()
.Si quiere hacerlo rápido y no quiere perder referencias y los oyentes usan: .insertAdarestHTML () ;
"No vuelve a analizar el elemento en el que se está utilizando y, por lo tanto , no corrompe los elementos existentes dentro del elemento. Esto y evitar el paso adicional de serialización lo hace mucho más rápido que la manipulación directa de innerHTML".
Compatible con todos los navegadores principales (IE6 +, FF8 +, Todos los demás y dispositivos móviles): http://caniuse.com/#feat=insertadaresthtml
Ejemplo de https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdarestHTML
fuente
insertAdjacentElement()
yinsertAdjacentText()
.Si está usando jQuery, puede usarlo
$('#mydiv').append('html content')
y mantendrá el contenido existente.http://api.jquery.com/append/
fuente
Incluso esto funcionará:
fuente
Solución IE9 + (Vista +), sin crear nuevos nodos de texto:
Sin embargo, esto no fue suficiente para mí, ya que necesitaba una nueva línea después de cada mensaje, por lo que mi DIV se convirtió en un UL con este código:
Desde https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent :
fuente
puedes usar jQuery. que lo hacen muy simple
simplemente descargue el archivo jQuery, agregue jQuery a su HTML
o puede usar el enlace en línea:
y prueba esto:
fuente
El siguiente método es menos general que otros, sin embargo, es excelente cuando está seguro de que su último nodo secundario del div ya es un nodo de texto. De esta manera, no creará un nuevo nodo de texto utilizando
appendData
MDN Reference AppendDatafuente
¿Por qué no solo usar setAttribute?
Entonces puede obtener estos datos de la siguiente manera:
fuente
script java
jquery
Use
.html()
sin ningún argumento para ver que ha ingresado. Puede usar la consola del navegador para probar rápidamente estas funciones antes de usarlas en su código.fuente