textNode値を変更する


91

WebブラウザーでDOM textNodeの値を変更する方法はありますか?

新しいノードを作成するのではなく、既存のノードを変更できるかどうかを確認したいのです。

明確にするために、Javascriptでこれを行う必要があります。ブラウザのすべてのテキストは、他のHTMLノードの子である#textNodesに保存されますが、独自の子ノードを持つことはできません。

以下で回答するように、これらのオブジェクトのnodeValueプロパティを設定することでコンテンツを変更できます。


HTMLの例と何を変更したいですか?JavaScriptを使用して実行しますか?
shahkalpesh 2009年

同じ質問に私の研究の間に、私がいることが分かったMozillaの開発者向けネットワークに関するセキュリティ通知提起innerHTML使用を、そして好むtextContent使用を。使用textContentするとうまくいきます。
ジョエル

回答:


130

特定のノード(タイプ#text)があり、その値を変更したい場合は、nodeValueプロパティを使用できます。

node.nodeValue="new value";

注意:

innerText(および たぶん textContent)は、現在のノードとすべての子孫ノードのテキストの両方を返す/設定するため、期待する動作とは異なる場合があります。


1
はい、nodeValueはこれに最適です。innerTextとtextContentはこの点で異なります:IE(innerTextを作成した人)は#textノードではそれをサポートしていません(textifyする子ノードがないため)。
クレセントフレッシュ

4
テキストの「nodeValue」(およびCDATASectionとComment)の短い同義語として「data」もあります。
ボビンス2009年

nodeValueは私が必要としたものです。どういうわけかそれは読み取り専用だと思ったが、FF3とIE7で動作するようです。ありがとう!
levik 2009年

8
@petermeissner:これは質問に完全に答えるので、あなたの反対票は完全に不当です。
Tim Down

1
常に機能するとは限りません。「nodeValueがnullとして定義されている場合、それを設定しても効果はありません。」..その場合、 "textContent"を選択しました...これを設定すると、 "innerText"の値も更新されました
foob​​ored

-10

私はこれにinnerHTMLが使用されていると思います...もう一度、それはW3C承認されていません...

node.innerHTML="new value";

1
実用的なソリューションの場合は+1。nodeValueでは要素のコンテンツを置き換えることができません
petermeissner

3
読み取り書き込みの両方でコードをテキストとして扱うため、決して使用innerHTMLないでください。
John

7
@petermeissner:これは質問には答えません。nodeValue親要素ではなく、テキストノードに設定する必要があります。
Tim Down
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.