Cara menambahkan string HTML ini
var str = '<p>Just some <span>text</span> here</p>';
ke DIV dengan ID 'test'
yang ada di DOM?
(Btw div.innerHTML += str;
tidak dapat diterima.)
javascript
html
dom
browser
Šime Vidas
sumber
sumber
innerHTML
menempatkan string ke dalam elemen (menggantikan semua anak), sedangkaninsertAdjacentHTML
menempatkannya (1) sebelum elemen, (2) setelah elemen, (3) di dalam elemen sebelum anak pertama, atau (4) di dalam elemen setelah anak terakhir.insertAdjacentHTML
lebih cepat daripada menambahkan keinnerHTML
, karenainsertAdjacentHTML
tidak membuat serial dan reparse turunan elemen yang sudah ada.insertAdjacentHTML
mempertahankan nilai elemen formulir yang diubah, sedangkan menambahkan untukinnerHTML
membangun kembali elemen dan kehilangan semua konteks formulir.Apakah ini dapat diterima?
jsFiddle .
Tapi , jawaban Neil adalah solusi yang lebih baik.
sumber
innerHTML
?insertAdjacentHTML
.Performa
AppendChild
(E) lebih dari 2x lebih cepat daripada solusi lain di chrome dan safari,insertAdjacentHTML
(F) tercepat di firefox. TheinnerHTML=
(B) (tidak bingung dengan+=
(A)) adalah solusi cepat kedua pada semua browser dan itu jauh lebih berguna daripada E dan F.Detail
Lingkungan pengaturan (2019.07.10) MacOs High Sierra 10.13.4 di Chrome 75.0.3770 (64-bit), Safari 11.1.0 (13604.5.6), Firefox 67.0.0 (64-bit)
Anda dapat memutar ulang pengujian di mesin Anda di sini
Tampilkan cuplikan kode
sumber
Idenya adalah menggunakan
innerHTML
elemen perantara dan kemudian memindahkan semua node turunannya ke tempat yang Anda inginkanappendChild
.Ini untuk menghindari penghapusan semua penangan acara,
div#test
tetapi masih memungkinkan Anda untuk menambahkan string HTML.sumber
Cara yang benar adalah menggunakan
insertAdjacentHTML
. Di Firefox sebelum 8, Anda dapat kembali menggunakanRange.createContextualFragment
jika Andastr
tidak berisiscript
tag.Jika Anda
str
mengandungscript
tag, Anda perlu menghapusscript
elemen dari fragmen yang dikembalikan olehcreateContextualFragment
sebelum memasukkan fragmen. Jika tidak, skrip akan berjalan. (insertAdjacentHTML
menandai skrip tidak dapat dieksekusi.)sumber
createContextualFragment
. Saya sedang mencari cara untuk membuat beberapa html yang disertakan dengan skrip yang dijalankan hanya jika pengguna setuju untuk mengatur cookie.Retas Cepat :
Kasus Penggunaan :
1: Simpan sebagai file .html dan jalankan di chrome atau firefox atau edge. (IE tidak akan berfungsi)
2: Gunakan di http://js.do
Beraksi: http://js.do/HeavyMetalCookies/quick_hack
Dipecah dengan komentar:
Alasan saya memposting:
JS.do memiliki dua hal yang harus dimiliki:
Tapi tidak menampilkan pesan console.log. Datang ke sini mencari solusi cepat. Saya hanya ingin melihat hasil dari beberapa baris kode papan gores, solusi lainnya terlalu banyak bekerja.
sumber
Mengapa itu tidak bisa diterima?
document.getElementById('test').innerHTML += str
akan menjadi cara buku teks melakukannya.
sumber
#test
. Itu umumnya tidak diinginkan.Ini bisa memecahkan
sumber
InnerHTML menghapus semua data seperti acara untuk node yang ada
menambahkan anak dengan firstChild hanya menambahkan anak pertama ke innerHTML. Misalnya jika kita harus menambahkan:
hanya teks1 yang akan muncul
Bagaimana dengan ini:
menambahkan tag khusus ke innerHTML dengan menambahkan anak lalu mengedit HTML luar dengan menghapus tag yang telah kita buat. Tidak tahu seberapa pintar itu tetapi berfungsi untuk saya atau Anda mungkin mengubah HTML luar ke dalamHTML sehingga tidak harus menggunakan fungsi pengganti
sumber
Terpendek - 18 karakter (tidak membingungkan
+=
(disebutkan oleh OP) dengan=
detail lebih lanjut di sini )Tampilkan cuplikan kode
sumber