textNode 값 변경


91

웹 브라우저에서 DOM textNode의 값을 변경하는 방법이 있습니까?

특히 새 노드를 만드는 대신 기존 노드를 변경할 수 있는지 확인하고 싶습니다 .

명확히하기 위해 Javascript로이 작업을 수행해야합니다. 브라우저의 모든 텍스트는 다른 HTML 노드의 자식 인 #textNodes에 저장되지만 자체 자식 노드는 가질 수 없습니다.

아래에 대답했듯이 이러한 객체 의 nodeValue 속성을 설정하여 내용을 변경할 수 있습니다 .


HTML의 예와 변경하고 싶은 것은 무엇입니까? 자바 스크립트를 사용 하시겠습니까?
shahkalpesh

같은 질문에 대한 내 연구하는 동안, 나는 것을 발견 모질라 개발자 네트워크에 대한 보안 공지 제기 innerHTML사용하고, 호의 textContent사용을 . 사용 textContent나를 위해 작품의 벌금을.
Joël

답변:


131

특정 노드 (#text 유형)가 있고 해당 값을 변경하려는 경우 nodeValue 속성을 사용할 수 있습니다 .

node.nodeValue="new value";

노트 :

innerText (및 혹시 textContent)는 현재 노드와 모든 하위 노드 텍스트를 모두 반환 / 설정하므로 원하는 / 기대하지 않을 수 있습니다.


1
예, nodeValue는 이것에 완벽합니다. innerText와 textContent는이 점에서 다릅니다 .IE (innerText를 만든 사람)은 #text 노드에서 지원하지 않는 반면 (textify 할 자식 노드가 없기 때문에) textContent는 #Element 및 #text 노드 모두에서 사용하도록되어 있습니다.
Crescent Fresh

4
Text의 'nodeValue'에 대한 짧은 동의어로 'data'도 있습니다 (CDATASection 및 Comment도 포함).
bobince

nodeValue는 내가 필요한 것입니다. 어떤 이유로 나는 그것이 읽기 전용이라고 생각했지만 FF3 및 IE7에서 작동하는 것 같습니다. 감사!
levik

8
@petermeissner : 이것은 질문에 완벽하게 대답하므로 귀하의 반대 투표는 완전히 부당합니다.
Tim Down

1
항상 작동하는 것은 아닙니다 .. "nodeValue가 null로 정의 된 경우 설정해도 효과가 없습니다." .. 나는 그 경우에 "textContent"를 선택했다 ... 설정은 "innerText"의 값도 업데이트했다
foobored

-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.