語法
js
createNodeIterator(root)
createNodeIterator(root, whatToShow)
createNodeIterator(root, whatToShow, filter)
引數
根-
作為
NodeIterator遍歷起始點的根節點。 whatToShow可選-
一個可選的
unsigned long,表示透過組合NodeFilter的常量屬性建立的位掩碼。這是一種方便地過濾特定型別節點的方法。它預設為0xFFFFFFFF,表示SHOW_ALL常量。常量 數值 描述 NodeFilter.SHOW_ALL4294967295(即unsigned long的最大值)顯示所有節點。 NodeFilter.SHOW_ATTRIBUTE2顯示屬性 Attr節點。這僅在建立以Attr節點為根的TreeWalker時有意義。在這種情況下,它意味著屬性節點將出現在迭代或遍歷的第一個位置。由於屬性永遠不是其他節點的子節點,因此在遍歷文件樹時它們不會出現。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_ENTITY已棄用32已棄用,不再可用。 NodeFilter.SHOW_ENTITY_REFERENCE已棄用16已棄用,不再可用。 NodeFilter.SHOW_NOTATION已棄用2048已棄用,不再可用。 NodeFilter.SHOW_PROCESSING_INSTRUCTION64顯示 ProcessingInstruction節點。NodeFilter.SHOW_TEXT4顯示 Text節點。 filter可選-
一個回撥函式或一個帶有
acceptNode()方法的物件。該函式或方法將針對根節點下子樹中的每個節點(根據 whatToShow 標誌被接受為包含在內)進行呼叫,以確定是否將其包含在可迭代節點列表中。該方法應返回NodeFilter.FILTER_ACCEPT、NodeFilter.FILTER_REJECT或NodeFilter.FILTER_SKIP之一。請參閱示例。對於
createNodeIterator,值NodeFilter.FILTER_REJECT和NodeFilter.FILTER_SKIP是等效的。此節點不會包含在可迭代節點列表中,但其子節點將繼續被迭代。
返回值
一個新的 NodeIterator 物件。
示例
js
const nodeIterator = document.createNodeIterator(
document.body,
NodeFilter.SHOW_ELEMENT,
(node) =>
node.nodeName.toLowerCase() === "p"
? NodeFilter.FILTER_ACCEPT
: NodeFilter.FILTER_REJECT,
);
const pars = [];
let currentNode;
while ((currentNode = nodeIterator.nextNode())) {
pars.push(currentNode);
}
同樣,但使用帶有 acceptNode() 方法的物件
js
const nodeIterator = document.createNodeIterator(
document.body,
NodeFilter.SHOW_ELEMENT,
{
acceptNode(node) {
return node.nodeName.toLowerCase() === "p"
? NodeFilter.FILTER_ACCEPT
: NodeFilter.FILTER_REJECT;
},
},
);
const pars = [];
let currentNode;
while ((currentNode = nodeIterator.nextNode())) {
pars.push(currentNode);
}
規範
| 規範 |
|---|
| DOM # dom-document-createnodeiterator |
瀏覽器相容性
載入中…