Node: phương thức compareDocumentPosition()
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 compareDocumentPosition() của giao diện Node báo cáo vị trí của nút đối số tương đối với nút mà nó được gọi trên đó.
Cú pháp
compareDocumentPosition(otherNode)
Tham số
Giá trị trả về
Một giá trị số biểu thị vị trí của otherNode so với node dưới dạng một bitmask kết hợp các thuộc tính hằng sau của Node, hoặc 0 nếu otherNode giống với nút này:
Node.DOCUMENT_POSITION_DISCONNECTED(1)-
Cả hai nút nằm trong các tài liệu khác nhau hoặc các cây khác nhau trong cùng một tài liệu.
Node.DOCUMENT_POSITION_PRECEDING(2)-
otherNodeđứng trước nút trong một duyệt theo chiều sâu trước thứ tự tiền tự của cây chứa cả hai nút (ví dụ: là tổ tiên, anh em trước hoặc hậu duệ của anh em trước, hoặc anh em trước của một tổ tiên) hoặc (nếu chúng bị ngắt kết nối) theo một thứ tự tùy ý nhưng nhất quán. Node.DOCUMENT_POSITION_FOLLOWING(4)-
otherNodeđứng sau nút trong một duyệt theo chiều sâu trước thứ tự tiền tự của cây chứa cả hai nút (ví dụ: là hậu duệ, anh em sau hoặc hậu duệ của anh em sau, hoặc anh em sau của một tổ tiên) hoặc (nếu chúng bị ngắt kết nối) theo một thứ tự tùy ý nhưng nhất quán. Node.DOCUMENT_POSITION_CONTAINS(8)-
otherNodelà một tổ tiên của nút. Node.DOCUMENT_POSITION_CONTAINED_BY(16)-
otherNodelà một hậu duệ của nút. Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC(32)-
Kết quả phụ thuộc vào hành vi tùy ý và/hoặc cụ thể của cách triển khai và không được đảm bảo là có thể di chuyển giữa các nền tảng.
Có thể đặt không hoặc nhiều bit, tùy thuộc vào kịch bản nào áp dụng. Ví dụ, nếu otherNode nằm sớm hơn trong tài liệu và chứa nút mà compareDocumentPosition() được gọi trên đó, thì cả bit DOCUMENT_POSITION_CONTAINS và DOCUMENT_POSITION_PRECEDING đều sẽ được đặt, tạo ra giá trị 10 (0x0A).
Ví dụ
const head = document.head;
const body = document.body;
if (head.compareDocumentPosition(body) & Node.DOCUMENT_POSITION_FOLLOWING) {
console.log("Tài liệu có cấu trúc đúng");
} else {
console.error("<head> không đứng trước <body>");
}
Note:
Vì kết quả trả về bởi compareDocumentPosition() là một bitmask, nên phải dùng toán tử AND theo bit để có kết quả có ý nghĩa.
Thông số kỹ thuật
| Specification |
|---|
| DOM> # ref-for-dom-node-comparedocumentposition①> |