DEV Community

Cover image for querySelector() vs. getElementById()
Colelevy
Colelevy

Posted on

querySelector() vs. getElementById()

Introduction
Recently, I have started learning JavaScript as the first part of my software engineering education through Flatiron School. Something I struggled with early on was the difference between querySelector() and getElementById(). Hopefully, this blog helps clear the confusion for other beginners that may be stuck where I was.

JavaScript
Javascript is a versatile language that provides developers with different ways of accessing HTML elements on a web page. Two of the most commonly used functions to retrieve elements from a webpage are querySelector() and getElementById(). In this blog, we will dive into the differences between these two functions, and when to use each one.

querySelector()
The querySelector() function is used to retrieve an element from the document using a CSS selector. It returns the first element that matches the specified selector. The selector can be any valid CSS selector, such as a class, id, or tag name. The querySelector() function is supported in all modern browsers.

For example, if we want to select the first paragraph element with a class of "intro", we can use the following code:

const introParagraph = document.querySelector('.intro');
Enter fullscreen mode Exit fullscreen mode

getElementById()
The getElementById() function is used to retrieve an element from the document using its ID attribute. It returns the element with the specified ID. IDs must be unique within a page, so getElementById() will always return one element or null if there is no matching element. The getElementById() function is supported in all modern browsers.

For example, if we want to select an element with the ID of "main-heading", we can use the following code:

const mainHeading = document.getElementById('main-heading');
Enter fullscreen mode Exit fullscreen mode

Differences between querySelector() and getElementById()
The main difference between these two functions is the way they select elements. getElementById() only works with ID attributes, while querySelector() can work with any CSS selector. Additionally, getElementById() is faster than querySelector() because it only needs to search for one element, whereas querySelector() may need to search for multiple elements before returning the first match.

When to use querySelector()
querySelector() is useful when you need to select an element using a CSS selector. This is especially useful when you need to select an element based on its class or tag name. querySelector() can also be used to select the first matching element of a group of elements, which can be helpful in certain situations.

When to use getElementById()
getElementById() is useful when you need to select an element using its ID attribute. Since IDs must be unique within a page, getElementById() will always return the correct element. getElementById() is also faster than querySelector(), which can be important in performance-sensitive applications.

Conclusion
In conclusion, querySelector() and getElementById() are both powerful functions that are used to retrieve elements from a web page. While they may seem similar at first glance, they have distinct differences that make them better suited for different situations. By understanding the differences between these two functions, developers can choose the right tool for the job and create more efficient and effective code.

Thank you for reading, if you have found this blog helpful, please like and feel free to share!

Top comments (10)

Collapse
 
arturmamedov profile image
Artur

Here they also discus this and seems that getElementById() is not faster then querySelector().
I also was thinking that a selection for unique #id is faster. also there are difference of Node List and Live elements: which is that querySelector returns a static node while getElementBy returns a live node. the difference between these two return types can be very important in the case that your DOM is updated in a way that affects that selector, since if you used getElementBy, the live node will still see the update, but querySelector will not.

Collapse
 
tohodo profile image
Tommy • Edited

One important thing to consider is that you may run into a page that doesn't follow standards, so you could get something like this: <input id="123abc">. In such cases, getElementById('123abc') would return the element, but querySelector('#123abc') would throw an error because #123abc is not a valid CSS selector.

Collapse
 
mihirjha profile image
Mihir Jha

well explained

Collapse
 
lopezlaug profile image
lopezlaug

Thank you for the post, it's helpful

Collapse
 
bissawjit profile image
BISSAWJIT CHANDRAW

Thank you for sharing the information.

Collapse
 
bhavit_mehta_9b575d79f5d0 profile image
Bhavit Mehta

this is very helpful artice and really explained in the very simple manner and i understood every bit of it

Collapse
 
torrescaiobr profile image
Caio Torres

Great explanation, thanks!

Collapse
 
joseph_olofinte_455e57c38 profile image
Joseph Olofinte

When you said getElementById() is faster than querySelector() because it only needs to search for one element, that's totally based on assumption.

Collapse
 
mayagozel01 profile image
Maya

I think this explanation is not enough . why i cant use method contains() when i select element by ID and when i get it with queryselector i can use that method?

Collapse
 
joseph_olofinte_455e57c38 profile image
Joseph Olofinte

When you said "getElementById() is faster than querySelector() because it only needs to search for one element," that's totally based on assumption.