> 웹 프론트엔드 > JS 튜토리얼 > 문서의 모든 TextNode를 검색하는 데 해당하는 getElementsByTagName()이 있습니까?

문서의 모든 TextNode를 검색하는 데 해당하는 getElementsByTagName()이 있습니까?

DDD
풀어 주다: 2024-11-25 08:51:11
원래의
279명이 탐색했습니다.

Is There a getElementsByTagName() Equivalent for Retrieving All TextNodes in a Document?

getElementsByTagName() TextNodes와 동일

질문:

다음과 유사한 메서드가 있습니까? 컬렉션을 검색하는 getElementsByTagName()

토론:

getElementsByTagName()은 요소를 효율적으로 수집할 수 있지만 textNodes로 확장되지는 않습니다. DOM을 탐색하는 것은 실행 가능한 옵션이지만 이 질문은 기본 브라우저 기반 솔루션의 가능성을 탐구합니다.

답변:

현재 getElementsByTagName과 직접적으로 동등한 것은 없습니다. ()는 textNodes의 경우입니다. 그러나 다음과 같은 몇 가지 대체 방법이 있습니다.

  1. TreeWalker: TreeWalker를 사용하면 문서 트리를 반복적으로 탐색하고 선택적으로 텍스트 노드를 추출할 수 있습니다.
  2. 사용자 정의 반복 탐색: 이 방법에는 문서 본문에서 시작하여 모든 하위 노드를 반복하는 작업이 포함됩니다. 텍스트 노드를 배열로 푸시합니다.
  3. 사용자 정의 재귀 순회: 반복 접근 방식과 유사하지만 재귀 함수를 사용하여 반환하기 전에 트리를 더 깊게 순회합니다.
  4. XPath 쿼리: XPath 쿼리를 사용하면 document.
  5. querySelectorAll: 텍스트 노드를 직접 대상으로 지정하지는 않지만 이 선택기는 첫 번째 텍스트 하위 노드를 포함하는 요소를 포함하여 모든 요소를 ​​반환할 수 있습니다.
  6. getElementsByTagName : 완벽하게 일치하지는 않지만 일반적으로 하위 텍스트 노드를 포함하는 요소를 반환합니다(예: p).

성능 테스트:

성능 테스트에 따르면 TreeWalker는 getElementsByTagName( ). Custom Iterative Traversal도 좋은 성능을 보여줍니다. XPath 및 querySelectorAll은 만족스러운 결과를 제공하지만 Recursive Traversal은 더 깊은 재귀로 인해 뒤쳐집니다.

추가 통찰력:

텍스트 노드를 수집하는 기본 방법이 존재하더라도 여전히 각 노드에서 실제 텍스트 콘텐츠를 탐색하고 추출해야 합니다. 따라서 성능 병목 현상은 텍스트 노드를 반복하는 것뿐만 아니라 해당 유형을 결정하기 위해 텍스트가 아닌 노드를 검사하는 것에도 있습니다.

위 내용은 문서의 모든 TextNode를 검색하는 데 해당하는 getElementsByTagName()이 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿