Document: phương thức createNodeIterator()
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Phương thức Document.createNodeIterator() trả về một đối tượng NodeIterator mới.
Cú pháp
createNodeIterator(root)
createNodeIterator(root, whatToShow)
createNodeIterator(root, whatToShow, filter)
Tham số
root-
Nút gốc nơi bắt đầu quá trình duyệt của
NodeIterator. whatToShowOptional-
Một
unsigned longtùy chọn đại diện cho một bitmask được tạo bằng cách kết hợp các hằng số củaNodeFilter. Đây là một cách thuận tiện để lọc các loại nút cụ thể. Mặc định là0xFFFFFFFFđại diện cho hằng sốSHOW_ALL.Hằng số Giá trị số Mô tả NodeFilter.SHOW_ALL0xFFFFFFFFHiển thị tất cả các nút. NodeFilter.SHOW_ATTRIBUTE0x2Hiển thị các nút Attr.NodeFilter.SHOW_CDATA_SECTION0x8Hiển thị các nút CDATASection.NodeFilter.SHOW_COMMENT0x80Hiển thị các nút Comment.NodeFilter.SHOW_DOCUMENT0x100Hiển thị các nút Document.NodeFilter.SHOW_DOCUMENT_FRAGMENT0x400Hiển thị các nút DocumentFragment.NodeFilter.SHOW_DOCUMENT_TYPE0x200Hiển thị các nút DocumentType.NodeFilter.SHOW_ELEMENT0x1Hiển thị các nút Element.NodeFilter.SHOW_ENTITYDeprecated0x20Legacy, không còn hiệu lực. NodeFilter.SHOW_ENTITY_REFERENCEDeprecated0x10Legacy, không còn hiệu lực. NodeFilter.SHOW_NOTATIONDeprecated0x800Legacy, không còn hiệu lực. NodeFilter.SHOW_PROCESSING_INSTRUCTION0x40Hiển thị các nút ProcessingInstruction.NodeFilter.SHOW_TEXT0x4Hiển thị các nút Text.Note: Hằng số
NodeFilter.SHOW_ATTRIBUTEchỉ có hiệu lực khi root là một nút thuộc tính. Vì cha của bất kỳ nútAttrnào luôn lànull,TreeWalker.nextNode()vàTreeWalker.previousNode()sẽ không bao giờ trả về một nútAttr. Để duyệt các nútAttr, hãy sử dụngElement.attributesthay thế. filterOptional-
Một hàm callback hoặc một đối tượng có phương thức
acceptNode(). Hàm hoặc phương thức sẽ được gọi cho mỗi nút trong cây con dựa trên root được chấp nhận là được bao gồm bởi cờ whatToShow để xác định xem có bao gồm nó trong danh sách các nút có thể duyệt hay không. Phương thức sẽ trả về một trong các giá trịNodeFilter.FILTER_ACCEPT,NodeFilter.FILTER_REJECThoặcNodeFilter.FILTER_SKIP. Xem Ví dụ.Đối với
createNodeIterator, các giá trịNodeFilter.FILTER_REJECTvàNodeFilter.FILTER_SKIPlà tương đương. Nút này sẽ không được bao gồm trong danh sách các nút có thể duyệt, nhưng các phần tử con của nó sẽ tiếp tục được duyệt.
Giá trị trả về
Một đối tượng NodeIterator mới.
Ví dụ
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);
}
Tương tự, nhưng sử dụng một đối tượng có phương thức acceptNode():
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);
}
Đặc tả kỹ thuật
| Specification |
|---|
| DOM> # dom-document-createnodeiterator> |