2012-09-05 1 views
31

가능한 중복은 : DOM 돌연변이 관계자를 처리 할 수있는 내 실험에서
How to retrieve the text of a DOM Text node?"데이터", "nodeValue", "textContent"또는 "wholeText"필드를 사용하여 텍스트 노드로 작업 할 때?

나는 target가 텍스트 노드 인 경우 모든 새 텍스트가 포함 된 네 개의 필드가있는 것으로 나타났습니다 노드

  • nodeValue
  • textContent
  • wholeText
  • 는 "가장 좋은 방법"이 분야의있는 내가 사용해야가 있습니까

    • data
    • ?

      일부 브라우저는 다른 브라우저 또는 이전 DOM 표준과의 호환성을 위해서입니까? 내가 텍스트를 수정하는 것과 비교해서 읽는 것이 차이를 만들어 낼 수 있습니까? 가장 좋은 사람이 있다면 다른 사람의 목적은 무엇입니까?

    +0

    네 말이 맞아. 대답하기 전에 검색 했어야 했어.) – raina77ow

    +0

    @ raina77ow : 검색을했는데 여러 가지 검색 방법이있어서 내 질문을 게시 한 후 검색을 계속했습니다. (- : – hippietrail

    답변

    28

    나는이 중에서 data을 선택했습니다 : CharacterData 인터페이스 (TextComment 것)를 구현하는 노드에 대해서만 정의됩니다. 다른 사람들을 위해이 속성에 액세스하려고 시도하면 undefined이됩니다.

    nodeValue은 텍스트 노드의 경우 기본적으로 data과 같지만 속성 및 주석 노드에도 실제로 정의됩니다. 그리고 저는 대개 제 프로그램이 일찍 실패하기를 원합니다.)

    textContent은 노드의 텍스트 내용을 나타내는 문자가 이고 그 자손이이기 때문에 전혀 다른 것입니다. wholeText과 함께 이것은 단일 텍스트 노드보다 복잡한 구조의 텍스트를 수집하는 데 더 많이 사용되어야합니다.

    위의 모든 것, textContentwholeText은 DOM 레벨 3 (= 더 현대)에서 정의되었습니다.

    +0

    내가 여기에서 물어보기 전에 실제로'데이터 '도 사용했습니다. 부분적으로 가장 간결했기 때문에 부분적으로 더 결정적인 이유가 있습니다. (- : – hippietrail

    +0

    사실이 네 가지 만 textContent 만 쓰기 가능합니다 ... (또는 오히려 실제 내용을 업데이트하는 것으로 보이는 것입니다. 이유는 무엇입니까? – Michael

    +2

    수정 :'data'는 "텍스트 노드 전용"으로 정의되어 있지 않지만 [CharacterData 인터페이스] (http://www.w3.org/TR/DOM-Level-3- Core/core.html # ID-FF21A306)는 [텍스트 노드] (http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1312295772)에 의해 상속 될뿐만 아니라, 뿐만 아니라 [주석 노드] (http://www.w3.org/TR/DOM-Level-3-Core/core.html#ID-1728279322)를 참조하십시오. –