JAVA SCRIPT

[JS] querySelector vs getElementById중 무엇을 사용해야 할까?

해봄코딩 2023. 2. 3. 20:53

querySelector와 getElementById 중 무엇을 써야 될지 개념이 없어서 정리를 해봅니다. 

querySelector는 다양한 선택자를  입력할 수 있어서  선호했더니,

다른분들은 속도가 느리다고 잘 안쓰는 편이라고 합니다. 

 


querySelector

선택자(selector)와 일치하는 첫번째 엘리먼트 객체를 반환합니다. 

일치하는 엘리먼트가 없으면 null을 반환합니다. 

선택자는 ' '(외따옴표)나 " "(쌍따옴표)로  시작하며, 선택자의 종류에 따라 말머리가 달라집니다. (아래 예시를 참고) 

구문

querySelector(selectors);

 

예시 

document.querySelector('img'); //선택자가 html태그일때 아무것도 붙이지 않는다.
document.querySelector('.study');  //선택자가 class일때 "."을 붙인다. 
document.querySelectory('#travel'); //선택자가 id일때 "#"d을 붙인다.

 

querySelectorAll이라도 녀석이 있다. 

선택자와 일치하는 엘리먼트들의 NodeList를 반환합니다.

querySelector는 하나만 반환하지만, 이 녀석은 선택자가 매치된 모든 엘리먼트을 반환합니다. 

여러 개를 선택하고 싶으면 이 녀석을 사용하면 될 것 같습니다. 
역시 일치하는 엘리먼트들이 없으면 빈 NodeList를 반환합니다. 

 

구문 

document. querySelectorAll(selectors);

 

예시

var matches = document.querySelectorAll("p");  //p엘리먼트의 nodeList를 한꺼번에 얻는다.

 


 

getElementById

 

id명과 일치하는 엘리먼트 객체를 반환합니다. 

역시 일치하는 엘리먼트가 없으면 null을 반환합니다. 

(getElementById는  선택자 기호를 안써도 됩니다. 즉 "#"을 안붙여도 됩니다)

 

구문

getElementById(id)

 

예시 

function changeColor(newColor) {
  var elem = document.getElementById('para');
  elem.style.color = newColor;
}

 


 

getElementByClassName 

class와 일치하는 엘리먼트들의 HTMLCollection을 반환합니다. 

(이 녀석도 선택자 기호를 안써도 됩니다. 즉 "."을 안붙여도 됩니다)

 

구문

document.getElementsByClassName(names)

 

예시

document.getElementsByClassName('test')

 


참고로 

실제 성능비교를 한 벤치마킹한 자료를 살펴보면 다음과 같습니다. 

Test name Executions per second
querySelector 2436022.0 Ops/sec
getElementById 3311597.0 Ops/sec



https://www.measurethat.net/Benchmarks/ShowResult/149680

 

Run results for: querySelector vs getElementById - MeasureThat.net

User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.101 Safari/537.36 Browser: Chrome 87 Operating system: Mac OS X 10.14.6 Device Platform: Desktop Date tested: one year ago

www.measurethat.net

 

 

 

아 이제 좀 이해가 갑니다. 

실제 자바스크립트에서 html에 접근하려고 이 녀석을 많이 사용하게 됩니다. 

저 같은 초보는 속도에 관심이 없으므로(ㅎㅎ)  querySelector가 편해서 자주 씁니다. 

 

'JAVA SCRIPT' 카테고리의 다른 글

[JS] getComputedStyle와 getPropertyValue  (0) 2023.01.26
[JS] JSON  (0) 2023.01.14
[일반] 객체, 클래스, 인스턴스의 개념  (1) 2023.01.09
[JS] 쌍따옴표(")와 홑따옴표(')에 대해서  (0) 2023.01.05
[JS] 화살표 함수  (0) 2022.12.27