Mengapa menyebut textarea khususnya? Kerana sebenarnya nod textarea sangat istimewa. Oleh kerana nod ini istimewa, ia ditafsirkan secara berbeza di bawah IE dan pelayar lain.
Cubalah, haha! Sebenarnya, sebab utama adalah untuk membantu abang senior memperbaiki BUG hari ini. Secara khusus, ia adalah kerana data gagal ditarik dari pelayan dan dimasukkan ke dalam kawasan teks. Semuanya berfungsi dengan baik dalam penyemak imbas lain!
Pertama sekali, kenapa textarea istimewa? Dalam semua bentuk pemalam, nilai textarea ditulis antara dua teg pembukaan dan penutup, jadi nilainya boleh dianggap sebagai nod teks dari perspektif DOM, yang unik untuk textarea. Justru kerana ciri ini anda masih boleh menukar teks kawasan teks apabila anda mengubah suai nilai innerHTMLnya Walaupun IE menyokong ini, ia tidak membenarkan satu perkara: memasukkan beberapa tag html secara dinamik.
Anda juga boleh melakukan percubaan:
Masukkan sekeping kod HTML melalui JS di bawah IE, menggunakan atribut innerHTML dan bukannya nilai atau innerText.
Saya belum menguji IE9, tetapi IE6, 7 dan 8 semuanya akan melaporkan ralat.
Dianggarkan atas sebab keselamatan, JS tidak dibenarkan memasukkan html secara dinamik ke dalam kawasan teks, tetapi orang yang berhati-hati boleh mendapati bahawa sebenarnya, jika anda menaip kod html secara manual, kawasan teks boleh diterima. Saya fikir ini sebenarnya melalui proses: melarikan diri watak. Ya, ini adalah satu-satunya sebab yang boleh menjelaskan kejayaan memasukkan kod html secara manual.
Jadi, pada pendapat saya, memandangkan kawasan teks bagi banyak penyemak imbas tidak menyokong paparan html, mengapa kita perlu menggunakan atribut innerHTML semasa mengendalikan JS? Maksudnya, sama ada anda menggunakan nilai untuk memasukkan kod html atau innerHTML untuk memasukkan kod html, ia tidak akan dihuraikan dan dipaparkan (itu sebabnya terdapat editor teks kaya dan bukannya textarea), jadi mengapa tidak menggunakan nilai untuk menetapkan nilai daripada textarea?
Jadi saya berpendapat bahawa nilai textarea tidak boleh ditetapkan melalui innerHTML (sudah tentu tidak mungkin untuk menjadi innerText, kerana firefox), tetapi harus ditetapkan melalui nilai. Ini adalah sesuatu yang perlu diberi perhatian oleh pemaju. Kerana beberapa kod untuk kasut kanak-kanak yang saya lihat baru-baru ini sentiasa suka menggunakan innerHTML. Malah, saya fikir semuanya bergantung pada kesempatan.