Ubah nilai textNode

92

Apakah ada cara untuk mengubah nilai textNode DOM di browser web?

Saya secara khusus ingin melihat apakah saya dapat mengubah node yang ada, daripada membuat yang baru.

Untuk memperjelas, saya perlu melakukan ini dengan Javascript. Semua teks di browser disimpan di #textNodes yang merupakan turunan dari node HTML lain, tetapi tidak dapat memiliki node turunan sendiri.

Seperti yang dijawab di bawah ini, konten dapat diubah dengan mengatur properti nodeValue Objek ini.

levik
sumber
Contoh HTML & apa yang ingin Anda ubah? Apakah Anda ingin melakukannya dengan javascript?
shahkalpesh
Selama penelitian saya tentang pertanyaan yang sama, saya menemukan bahwa Mozilla Developer Network meningkatkan pemberitahuan keamanan tentang innerHTMLpenggunaan, dan mendukung textContentpenggunaan . Menggunakan textContentbekerja dengan baik untuk saya.
Joël

Jawaban:

133

Jika Anda memiliki node tertentu (tipe #text) dan ingin mengubah nilainya, Anda dapat menggunakan properti nodeValue :

node.nodeValue="new value";

catatan:

innerText (dan mungkin textContent) akan mengembalikan / menyetel node saat ini dan semua teks node turunan, sehingga mungkin bukan perilaku yang Anda inginkan / harapkan.

Abu
sumber
1
Ya, nodeValue sempurna untuk ini. innerText dan textContent berbeda dalam hal ini: IE (yang membuat innerText) tidak mendukungnya di node #text (karena tidak ada node turunan untuk textify), sedangkan textContent dimaksudkan untuk digunakan pada node #Element DAN #text.
Crescent Fresh
4
Ada juga 'data' sebagai sinonim singkat untuk 'nodeValue' pada Teks (serta CDATASection dan Comment).
bobince
nodeValue adalah yang saya butuhkan. Untuk beberapa alasan saya pikir itu hanya-baca, tetapi tampaknya berfungsi pada FF3 dan IE7. Terima kasih!
levik
8
@petermeissner: Ini menjawab pertanyaan dengan sempurna, jadi suara negatif Anda sama sekali tidak beralasan.
Tim Down
1
Bekerja tidak selalu .. "Jika nodeValue didefinisikan sebagai null, pengaturannya tidak akan berpengaruh." .. Saya memilih dalam kasus itu untuk "textContent" ... menyetelnya juga memperbarui nilai untuk "innerText"
foobored
-10

Saya percaya innerHTML digunakan untuk ini ... Kemudian lagi, itu tidak disetujui W3C ... tetapi berfungsi ...

node.innerHTML="new value";
KdgDev
sumber
1
1 untuk solusi yang berfungsi. nodeValue tidak mengizinkan saya mengganti konten elemen
petermeissner
3
Anda tidak boleh menggunakan innerHTMLkode karena memperlakukan kode sebagai teks baik dalam membaca maupun menulis.
Yohanes
7
@petermeissner: Ini tidak menjawab pertanyaan. Anda harus mengatur nodeValuepada node teks, bukan elemen induknya.
Tim Down