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.