Apa perbedaan antara innerHTML
, innerText
dan childNodes[].value
dalam JavaScript?
javascript
dom
pengguna2819851
sumber
sumber
innerText
, implementasi textContext yang tidak standar oleh MSIE, adalah non-sepele.innerText
telah ditambahkan ke standar dan didukung oleh semua browser utama.textContent
sekarang didukung oleh IE> = 9 dan dapat digunakan sebagai gantiinnerText
dalam kebanyakan kasus (bonus, itu jauh lebih cepat), tetapi ada perbedaan antara keduanya, jadi dalam beberapa kasus Anda tidak dapat menukar mereka.innerText
didukung dengan baik di semua browser. Firefox mulai mendukungnya dari versi 45. caniuse.com/#search=innertextinnerHTML
adalah kerentanan yang diketahui untuk serangan XSS. Yang mengatakan,innerText
tidak 100% aman juga. stackoverflow.com/questions/52707031/does-innertext-prevent-xss blog.cloudboost.io/…Jawaban:
innerText
Namun, tidak seperti yang lain ,innerHTML
Anda dapat bekerja dengan teks kaya HTML dan tidak secara otomatis menyandikan dan mendekode teks. Dengan kata lain,innerText
mengambil dan menetapkan konten tag sebagai teks biasa, sedangkaninnerHTML
mengambil dan mengatur konten dalam format HTML.sumber
Contoh di bawah ini merujuk ke cuplikan HTML berikut:
Node akan dirujuk oleh JavaScript berikut:
element.innerHTML
Menyetel atau mendapatkan sintaks HTML yang menjelaskan turunan elemen
Ini adalah bagian dari Spesifikasi Parsing dan Serialisasi DOM W3C . Perhatikan itu milik
Element
benda.node.innerText
Menetapkan atau mendapatkan teks antara tag awal dan akhir objek
innerText
diperkenalkan oleh Microsoft dan untuk sementara tidak didukung oleh Firefox. Pada bulan Agustus 2016,innerText
telah diadopsi oleh WHATWG dan ditambahkan ke Firefox di v45.innerText
memberi Anda representasi sadar-gaya dari teks yang mencoba mencocokkan apa yang dirender oleh browser ini artinya:innerText
berlakutext-transform
danwhite-space
aturaninnerText
memotong ruang putih di antara garis dan menambahkan jeda baris di antara iteminnerText
tidak akan mengembalikan teks untuk item yang tidak terlihatinnerText
akan kembalitextContent
untuk elemen yang tidak pernah dirender seperti<style />
dan `Node
elemennode.textContent
Mendapat atau menetapkan konten teks dari sebuah node dan turunannya.
Meskipun ini adalah standar W3C , itu tidak didukung oleh IE <9.
Node
elemennode.value
Ini tergantung pada elemen yang Anda targetkan. Untuk contoh di atas,
x
mengembalikan objek HTMLDivElement , yang tidak memilikivalue
properti yang ditentukan.Tag input (
<input />
), misalnya, mendefinisikanvalue
properti , yang merujuk pada "nilai saat ini dalam kontrol".Dari dokumen :
Contoh Script
Berikut ini contoh yang menunjukkan output untuk HTML yang disajikan di atas:
sumber
innerText
: quirksmode.org/dom/html dan quirksmode.org/dom/tests/innerhtml.htmlFirefox >=45
didukung.innerText
sekarang merupakan bagian dari Standar dan harus didukung oleh Firefox dari versi 45; mungkin alasan pembaruan untuk jawaban hebat ini @faraz<
ke<
,>
ke>
, dll.InnerText
properti html-mengkodekan konten, beralih<p>
ke<p>
, dll. Jika Anda ingin memasukkan tag HTML yang perlu Anda gunakanInnerHTML
.sumber
Dengan kata sederhana:
innerText
akan menampilkan nilai apa adanya dan mengabaikanHTML
pemformatan apa pun yang mungkin disertakan.innerHTML
akan menunjukkan nilai dan menerapkanHTML
pemformatan apa pun .sumber
Untuk lebih mempersempitnya dan mengambil nilai Alec misalnya, gunakan .childNodes lain [1]
sumber
Dalam hal
MutationObservers
, pengaturaninnerHTML
menghasilkanchildList
mutasi karena browser menghapus simpul dan kemudian menambahkan simpul baru dengan nilaiinnerHTML
.Jika Anda mengatur
innerText
,characterData
mutasi dihasilkan.sumber
Satu-satunya perbedaan antara
innerText
daninnerHTML
adalahinnerText
memasukkan string seperti itu ke dalam elemen, sementarainnerHTML
menjalankannya sebagai konten html.sumber
InnerText
hanya akan mengembalikan nilai teks halaman dengan setiap elemen pada baris baru dalam teks biasa, sementarainnerHTML
akan mengembalikan konten HTML dari segala sesuatu di dalambody
tag, danchildNodes
akan mengembalikan daftar node, seperti namanya.sumber
The
innerText
properti mengembalikan teks yang sebenarnya nilai dari suatu elemen html sedangkaninnerHTML
mengembalikanHTML content
. Contoh di bawah ini:sumber
untuk ditambahkan ke daftar, innerText akan membuat transformasi teks Anda, innerHTML tidak akan terjadi
sumber