TextNode değerini değiştir


92

Web tarayıcısında DOM textNode değerini değiştirmenin herhangi bir yolu var mı?

Yeni bir düğüm oluşturmak yerine özellikle mevcut düğümü değiştirip değiştiremeyeceğimi görmek istiyorum .

Açıklığa kavuşturmak için bunu Javascript ile yapmam gerekiyor. Tarayıcıdaki tüm metin, diğer HTML düğümlerinin çocukları olan, ancak kendi alt düğümlerine sahip olamayan # metinNodlarında saklanır.

Aşağıda yanıtlandığı gibi, bu Nesnelerin nodeValue özelliği ayarlanarak içerik değiştirilebilir .


HTML örneği ve neyi değiştirmek istersiniz? Bunu javascript kullanarak yapmak istiyor musunuz?
— shahkalpesh

Aynı soruyla ilgili araştırmam sırasında, Mozilla Developer Network'ün innerHTMLkullanımla ilgili bir güvenlik uyarısı oluşturduğunu ve textContentkullanımı desteklediğini öğrendim . Kullanılması textContentbenim için çalışmalar cezası.
— Joël

Yanıtlar:


133

Belirli bir düğümünüz varsa (# metin türünde) ve değerini değiştirmek istiyorsanız nodeValue özelliğini kullanabilirsiniz :

node.nodeValue="new value";

Not:

innerText (ve muhtemelen textContent) hem geçerli düğümü hem de tüm alt düğüm metnini döndürür / ayarlar ve bu nedenle, istediğiniz / beklediğiniz davranış olmayabilir.


1
Evet, nodeValue bunun için mükemmeldir. innerText ve textContent bu bakımdan farklılık gösterir: IE (innerText'i oluşturan), # metin düğümlerinde desteklemez (çünkü metinleştirilecek alt düğümler yoktur), oysa textContent hem #Element hem de # metin düğümlerinde kullanılması amaçlanmıştır.
— Crescent Fresh

4
Metin üzerinde 'nodeValue' ile kısa bir eşanlamlı olarak 'veri' de vardır (CDATASection ve Comment).
— bobince

nodeValue, ihtiyacım olan şey. Bazı nedenlerden dolayı salt okunur olduğunu düşündüm, ancak FF3 ve IE7 üzerinde çalışıyor gibi görünüyor. Teşekkürler!
— levik

8
@petermeissner: Bu, soruyu mükemmel bir şekilde yanıtlıyor, dolayısıyla olumsuz oyunuz tamamen garantisiz.
— Tim Down

1
Her zaman çalışmaz .. "nodeValue null olarak tanımlandığında, ayarlamanın bir etkisi olmaz." .. Ben de "innerText" karşılığını güncellenmiş ayarı ... "textContent" için bu durumda seçti
— foobored

-10

Bunun için innerHTML kullanıldığına inanıyorum ... Sonra tekrar, bu W3C onaylı değil ... ama işe yarıyor ...

node.innerHTML="new value";

1
Çalışan bir çözüm için +1. nodeValue öğenin içeriğini değiştirmeme izin vermiyor
— petermeissner

3
Sen gerektiğini asla kullanmak innerHTMLhem okuma metni olarak kod davranır gibi ve yazma.
— John

7
@petermeissner: Bu soruya cevap vermiyor. nodeValueAna öğesini değil, metin düğümünü ayarlamanız gerekir .
— Tim Down
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.