Saya menggunakan AJAX untuk menambahkan data ke elemen div, di mana saya mengisi div dari JavaScript, bagaimana saya bisa menambahkan data baru ke div tanpa kehilangan data sebelumnya yang ditemukan di div?
javascript
Adham
sumber
sumber
Jawaban:
Coba ini:
sumber
div
mengandung elemen dengan pendengar acara atau input dengan teks yang dimasukkan pengguna. Saya merekomendasikan jawabannya oleh Chandu .Menggunakan appendChild:
Menggunakan innerHTML:
Pendekatan ini akan menghapus semua pendengar ke elemen yang ada seperti yang disebutkan oleh @BiAiB. Jadi gunakan hati-hati jika Anda berencana untuk menggunakan versi ini.
sumber
createTextNode
tidak akan berfungsi jika Anda memuat HTML. Jika Anda ingin menambahkan item daftar, misalnya, ini tidak akan berhasil. Itu sangat membatasi.Waspadalah terhadap
innerHTML
, Anda kehilangan sesuatu saat menggunakannya:Setara dengan:
Yang akan menghancurkan semua node di dalam Anda
div
dan membuat yang baru. Semua referensi dan pendengar elemen di dalamnya akan hilang .Jika Anda perlu menyimpannya (ketika Anda telah melampirkan handler klik, misalnya), Anda harus menambahkan konten baru dengan fungsi DOM (appendChild, masukkanSetelah, masukkanSebelum):
sumber
appendChild
dilakukan oleh @Cybernatedocument.createTextNode()
.Jika Anda ingin melakukannya dengan cepat dan tidak ingin kehilangan referensi dan pendengar gunakan: .insertAdjacentHTML () ;
"Itu tidak memecah elemen yang sedang digunakan dan karenanya tidak merusak elemen yang ada di dalam elemen. Ini, dan menghindari langkah tambahan serialisasi membuatnya lebih cepat daripada manipulasi innerHTML langsung."
Didukung di semua browser arus utama (IE6 +, FF8 +, Lainnya, dan Seluler): http://caniuse.com/#feat=insertadjacenthtml
Contoh dari https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTML
sumber
insertAdjacentElement()
daninsertAdjacentText()
.Jika Anda menggunakan jQuery, Anda dapat menggunakan
$('#mydiv').append('html content')
dan itu akan menjaga konten yang ada.http://api.jquery.com/append/
sumber
Bahkan ini akan berhasil:
sumber
Solusi IE9 + (Vista +), tanpa membuat simpul teks baru:
Namun, ini tidak cukup membantu saya karena saya membutuhkan baris baru setelah setiap pesan, jadi DIV saya berubah menjadi UL bergaya dengan kode ini:
Dari https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent :
sumber
Anda bisa menggunakan jQuery. yang membuatnya sangat sederhana.
cukup unduh file jQuery, tambahkan jQuery ke HTML
Anda atau Anda dapat menggunakan tautan daring:
dan coba ini:
sumber
Metode berikut ini kurang umum daripada yang lain namun itu bagus ketika Anda yakin bahwa simpul anak terakhir Anda dari div sudah menjadi simpul teks. Dengan cara ini Anda tidak akan membuat simpul teks baru menggunakan
appendData
MDN Reference AppendDatasumber
Mengapa tidak menggunakan setAttribute saja?
Maka Anda bisa mendapatkan data ini dengan:
sumber
skrip java
jquery
Gunakan
.html()
tanpa argumen apa pun untuk melihat bahwa Anda telah memasukkan. Anda dapat menggunakan konsol browser untuk dengan cepat menguji fungsi-fungsi ini sebelum menggunakannya dalam kode Anda.sumber