- HTML Home
- HTML Roadmap
- HTML Introduction
- HTML History & Evolution
- HTML Editors
- HTML Basic Tags
- HTML Elements
- HTML Attributes
- HTML Headings
- HTML Paragraphs
- HTML Fonts
- HTML Blocks
- HTML Style Sheet
- HTML Formatting
- HTML Quotations
- HTML - Comments
- HTML - Colors
- HTML - Images
- HTML - Image Map
- HTML - Frames
- HTML - Iframes
- HTML - Phrase Elements
- HTML - Code Elements
- HTML - Meta Tags
- HTML - Classes
- HTML - IDs
- HTML - Backgrounds
- HTML Tables
- HTML - Tables
- HTML - Table Headers & Captions
- HTML - Table Styling
- HTML - Table Colgroup
- HTML - Nested Tables
- HTML Lists
- HTML - Lists
- HTML - Unordered Lists
- HTML - Ordered Lists
- HTML - Definition Lists
- HTML Links
- HTML - Text Links
- HTML - Image Links
- HTML - Email Links
- HTML Color Names & Values
- HTML - Color Names
- HTML - RGB & RGBA Colors
- HTML - HEX Colors
- HTML - HSL & HSLA Colors
- HTML - HSL Color Picker
- HTML Forms
- HTML - Forms
- HTML - Form Attributes
- HTML - Form Control
- HTML - Input Attributes
- HTML Media
- HTML - Video Element
- HTML - Audio Element
- HTML - Embed Multimedia
- HTML Header
- HTML - Head Element
- HTML - Adding Favicon
- HTML - Javascript
- HTML Layouts
- HTML - Layouts
- HTML - Layout Elements
- HTML - Layout using CSS
- HTML - Responsiveness
- HTML - Symbols
- HTML - Emojis
- HTML - Style Guide
- HTML Graphics
- HTML - SVG
- HTML - Canvas
- HTML APIs
- HTML - Geolocation API
- HTML - Drag & Drop API
- HTML - Web Workers API
- HTML - WebSocket
- HTML - Web Storage
- HTML - Server Sent Events
- HTML Miscellaneous
- HTML - Document Object Model (DOM)
- HTML - MathML
- HTML - Microdata
- HTML - IndexedDB
- HTML - Web Messaging
- HTML - Web CORS
- HTML - Web RTC
- HTML Demo
- HTML - Audio Player
- HTML - Video Player
- HTML - Web slide Desk
- HTML Tools
- HTML - Velocity Draw
- HTML - QR Code
- HTML - Modernizer
- HTML - Validation
- HTML - Color Picker
- HTML References
- HTML - Cheat Sheet
- HTML - Tags Reference
- HTML - Attributes Reference
- HTML - Events Reference
- HTML - Fonts Reference
- HTML - ASCII Codes
- ASCII Table Lookup
- HTML - Color Names
- HTML - Character Entities
- MIME Media Types
- HTML - URL Encoding
- Language ISO Codes
- HTML - Character Encodings
- HTML - Deprecated Tags
- HTML Resources
- HTML - Quick Guide
- HTML - Useful Resources
- HTML - Color Code Builder
- HTML - Online Editor
HTML - DOM Element compareDocumentPosition() Method
The HTML DOM Element compareDocumentPosition() method is used to understand the document structure by comparing the positions of two DOM elements (nodes) and returns a bitmask.
A bitmask is a numeric value representing the position of the first element relative to the second element.
Syntax
Following is the syntax of the HTML DOM Element compareDocumentPosition() method −
node.compareDocumentPosition(otherNode);
Parameters
This method accepts a single parameter as listed below −
| Method | Description |
|---|---|
| otherNode | The other DOM node to compare against the original node. |
Return Value
A bitmask indicating the positional relationship between the two DOM nodes. It's values and their meanings are as follows:
| Relation | Values & Description |
|---|---|
| Different Docs |
1 Nodes belong to different documents |
| After |
2 First node comes after the second |
| Before |
4 First node comes before the second |
| Inside (1st) |
8 First node is inside the second |
| Inside (2nd) |
16 Second node is inside the first |
| Same Attributes |
32 Nodes are attributes on the same element |
Example 1: Comparing Elements in a Document
The following program demonstrates the usage of the HTML DOM Element compareDocumentPosition() by comparing two elements within the same document −
<!DOCTYPE html>
<html lang="en">
<head>
<title>HTML DOM Element compareDocumentPosition()</title>
<style>
.element {
border: 1px solid #ccc;
margin-bottom: 10px;
}
.relation {
font-style: italic;
}
</style>
</head>
<body>
<h3>HTML DOM Element compareDocumentPosition() method</h3>
<div class="element" id="element1">Element 1</div>
<div class="element" id="element2">Element 2</div>
<div class="relation" id="relation"></div>
<button onclick="compareElements()">Compare Elements</button>
<script>
function compareElements() {
var element1 = document.getElementById('element1');
var element2 = document.getElementById('element2');
var relation = document.getElementById('relation');
var position = element1.compareDocumentPosition(element2);
if (position & Node.DOCUMENT_POSITION_PRECEDING){
relation.textContent = 'Element 1 precedes Element 2.';
} else if
(position & Node.DOCUMENT_POSITION_FOLLOWING){
relation.textContent = 'Element 1 follows Element 2.';
} else if
(position & Node.DOCUMENT_POSITION_CONTAINS) {
relation.textContent = 'Element 1 contains Element 2.';
} else if
(position & Node.DOCUMENT_POSITION_CONTAINED_BY){
relation.textContent = 'Element 1 is contained by Element 2.';
} else if (position === 0) {
relation.textContent = 'Element 1 and Element 2 are same.';
} else {
relation.textContent = 'Unknown relationship.';
}
}
</script>
</body>
</html>
The above program displays "Element 1 follows Element 2.", which means both the element having same document position.
Example 2: Comparing Element with it's Descendant
Here is another example of the HTML DOM Element compareDocumentPosition(). We compare the parent element with its child (descendant) element using this method −
<!DOCTYPE html>
<html lang="en">
<head>
<style>
.container {
border: 1px solid #ccc;
padding: 10px;
margin-bottom: 10px;
}
.descendant {
border: 1px solid #f0f0f0;
padding: 8px;
margin-left: 20px;
}
</style>
</head>
<body>
<h3>HTML DOM Element compareDocumentPosition() Method</h3>
<p>Compare Element with Descendant Example</p>
<div class="container" id="parentElement">
Parent Element
<div class="descendant" id="descendantElement">
Descendant Element
</div>
</div>
<p id="relation"></p>
<button onclick="cmprWithDescendant()">Compare with Descendant</button>
<script>
function cmprWithDescendant() {
var parentElement = document.getElementById('parentElement');
var descendantElement =
document.getElementById('descendantElement');
var relation = document.getElementById('relation');
var position =
parentElement.compareDocumentPosition(descendantElement);
if (position & Node.DOCUMENT_POSITION_CONTAINS){
relation.textContent =
'Parent contained by Descendant Element.';
}
else if (position&Node.DOCUMENT_POSITION_CONTAINED_BY){
relation.textContent =
'Descendant contained by Parent Element.';
} else {
relation.textContent = 'No direct containment.';
}
}
</script>
</body>
</html>
When the button clicks, it displays "Descendant contained by Parent Element" which means the the parent contains the specified element.
Example 3: Comparing Two Disconnected Elements
This example shows how to handle the case when two elements are compared but do not have any meaningful document relationship −
<!DOCTYPE html>
<html lang="en">
<head>
<title>HTML DOM Element compareDocumentPosition()</title>
<style>
body {
font-family: Arial, sans-serif;
margin: 20px;
}
</style>
</head>
<body>
<h3>HTML DOM Element compareDocumentPosition() Method</h3>
<div id="myElement" class="example" title="An example element"></div>
<button id="checkButton">Check Attributes</button>
<p id="result"></p>
<script>
document.getElementById('checkButton').addEventListener('click',
function() {
// Get the element
let element = document.getElementById('myElement');
// Get the attributes
let attrClass = element.getAttributeNode('class');
let attrTitle = element.getAttributeNode('title');
// Compare the document positions
let comparisonResult = attrClass.compareDocumentPosition(attrTitle);
// Check if the nodes are attributes
//of the same element
let resultText;
if (comparisonResult & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC){
resultText = 'Attributes are on the same element';
} else {
resultText = 'Attributes are not on the same element';
}
// Display the result in the paragraph element
document.getElementById('result').innerText = resultText;
});
</script>
</body>
</html>
Supported Browsers
| Method | ![]() |
![]() |
![]() |
![]() |
![]() |
|---|---|---|---|---|---|
| compareDocumentPosition() | Yes | Yes | Yes | Yes | Yes |




