TreeWalker
åºçº¿
广æ³å¯ç¨
èª 2015å¹´7æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
TreeWalker 对象ç¨äºè¡¨ç¤ºææ¡£åæ ä¸çèç¹åå®ä»¬çä½ç½®ã
TreeWalker å¯ä»¥ä½¿ç¨ Document.createTreeWalker() æ¹æ³å建ã
屿§
è¿ä¸ªæ¥å£ä¸ç»§æ¿ä»»ä½å±æ§ã
TreeWalker.rootåªè¯»-
è¿åä¸ä¸ª
Nodeï¼è¡¨ç¤ºæ°å»ºTreeWalkeræ¶æå£°æçæ ¹èç¹ã TreeWalker.whatToShowåªè¯»-
è¿åä¸ä¸ª
unsigned longç±»åç常é使©ç ï¼è¡¨ç¤ºéè¦çéçNodeç±»åãä¸å¹é çèç¹ä¼è·³è¿ï¼ä½å ¶åèç¹ï¼å¦æç¬¦åæ¡ä»¶ï¼åä¹ä¼è¢«å å«ãå¯è½çå¼å¦ä¸ï¼å¸¸é æ°åå¼ æè¿° NodeFilter.SHOW_ALL4294967295ï¼unsigned longç±»åçæå¤§å¼ï¼æ¾ç¤ºææèç¹ã NodeFilter.SHOW_ATTRIBUTE2æ¾ç¤º Attrèç¹ï¼è¿æå³ç使ç¨TreeWalker访é®Attrèç¹æ¶ï¼éè¦è®©è¿äºèç¹å¤äºéåçå¼å§ä½ç½®ãè¿æ¯å 为è¿äºèç¹ä¸æ¯ä»»ä½èç¹çå代ï¼å¹¶ä¸å¤äºææ¡£æ ä¹ä¸ãNodeFilter.SHOW_CDATA_SECTION8æ¾ç¤º CDATASectionèç¹ãNodeFilter.SHOW_COMMENT128æ¾ç¤º Commentèç¹ãNodeFilter.SHOW_DOCUMENT256æ¾ç¤º Documentèç¹ãNodeFilter.SHOW_DOCUMENT_FRAGMENT1024æ¾ç¤º DocumentFragmentèç¹ãNodeFilter.SHOW_DOCUMENT_TYPE512æ¾ç¤º DocumentTypeèç¹ãNodeFilter.SHOW_ELEMENT1æ¾ç¤º Elementèç¹ãNodeFilter.SHOW_ENTITY32éç屿§ï¼ä¸åå¯ç¨ã NodeFilter.SHOW_ENTITY_REFERENCE16éç屿§ï¼ä¸åå¯ç¨ã NodeFilter.SHOW_NOTATION2048éç屿§ï¼ä¸åå¯ç¨ã NodeFilter.SHOW_PROCESSING_INSTRUCTION64æ¾ç¤º ProcessingInstructionèç¹ãNodeFilter.SHOW_TEXT4æ¾ç¤º Textèç¹ã TreeWalker.filteråªè¯»-
è¿åä¸ä¸ªå®ç°
NodeFilteræ¥å£ç对象ï¼è¿ä¸ªå¯¹è±¡ç¨æ¥æéç¸å ³çèç¹ã TreeWalker.currentNode-
è¿å
TreeWalkerå½åæåçNodeã
æ¹æ³
è¿ä¸ªæ¥å£ä¸ç»§æ¿ä»»ä½æ¹æ³ã
夿³¨ï¼å¯¹äº TreeWalkerï¼ä¸ä¸ªèç¹æ¯å¦å¯è§åªåå³äº whatToShow å filter ä¸¤ä¸ªåæ°ãï¼åå
ç´ æ¯å¦å¨å±å¹ä¸å¯è§æ å
³ãï¼
TreeWalker.parentNode()-
ç§»å¨å½å
Nodeå°ææ¡£é¡ºåºä¸ç第ä¸ä¸ªâå¯è§âçç¥å èç¹ï¼å¹¶è¿å该èç¹ãå¦ææ²¡æè¿æ ·çèç¹ï¼åä¼è¿å nullï¼åæ¶ä¹ä¸ä¼åçç§»å¨ã TreeWalker.firstChild()-
ç§»å¨å½å
Nodeå°å½åèç¹ç第ä¸ä¸ªâå¯è§âåèç¹ï¼å¹¶è¿å该èç¹ãå¦ææ²¡æè¿æ ·çèç¹ï¼åä¼è¿å nullï¼åæ¶ä¹ä¸ä¼åçç§»å¨ãhtml<!DOCTYPE html> <html lang="en"> <head><title>Demo</title> <body> <div id="container"></div> </body> </html>jslet walker = document.createTreeWalker(document.body, NodeFilter.SHOW_ALL); let node = walker.firstChild(); // nodeName: "#text"ä½å¦ææä»¬è¿æ ·åï¼
jslet walker = document.createTreeWalker( document.body, NodeFilter.SHOW_ELEMENT, ); let node = walker.firstChild(); // nodeName: "DIV"è¿åæ ·åºç¨äº
nextSibling()ãpreviousSibling()ãfirstChild()ålastChild()ã TreeWalker.lastChild()-
ç§»å¨å½å
Nodeå°å½åèç¹çææ«ä¸ä¸ªâå¯è§âåèç¹ï¼å¹¶è¿å该èç¹ãå¦ææ²¡æè¿æ ·çèç¹ï¼åä¼è¿å nullï¼åæ¶ä¹ä¸ä¼åçç§»å¨ã TreeWalker.previousSibling()-
ç§»å¨å½å
Nodeå°å½åèç¹çåä¸ä¸ªå å¼èç¹ï¼å¹¶è¿å该èç¹ãå¦ææ²¡æè¿æ ·çèç¹ï¼åä¼è¿å nullï¼åæ¶ä¹ä¸ä¼åçç§»å¨ã TreeWalker.nextSibling()-
ç§»å¨å½å
Nodeå°å½åèç¹çåä¸ä¸ªå å¼èç¹ï¼å¹¶è¿å该èç¹ãå¦ææ²¡æè¿æ ·çèç¹ï¼åä¼è¿å nullï¼åæ¶ä¹ä¸ä¼åçç§»å¨ã TreeWalker.previousNode()-
ç§»å¨å½å
Nodeå°ææ¡£é¡ºåºä¸åä¸ä¸ªèç¹ï¼å¹¶è¿å该èç¹ãå¦ææ²¡æè¿æ ·çèç¹ï¼åä¼è¿å nullï¼åæ¶ä¹ä¸ä¼åçç§»å¨ã TreeWalker.nextNode()-
ç§»å¨å½å
Nodeå°ææ¡£é¡ºåºä¸ä¸ä¸ä¸ªèç¹ï¼å¹¶è¿å该èç¹ãå¦ææ²¡æè¿æ ·çèç¹ï¼åä¼è¿å nullï¼åæ¶ä¹ä¸ä¼åçç§»å¨ã
è§è
| è§è |
|---|
| DOM > # interface-treewalker > |
æµè§å¨å ¼å®¹æ§
åè§
- æé 彿°ï¼
Document.createTreeWalker()ã - ç¸å
³æ¥å£ï¼
NodeFilterãNodeIteratorã