✏️ Javascript
반복적인 DOM 선택, 효율적으로 하기
category
✏️ Javascript
date
Apr 8, 2023
thumbnail
slug
반복적인-DOM-선택-효율적으로-하기
author
status
Public
tags
summary
type
Post
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F980718df-dec2-4ed6-86a7-8523376d1275%2F345711ba-6b44-4850-a9d1-4913f8fed312%2FUntitled.png%3Fid%3D236be66e-d479-4451-bbaf-b5ab59cc96d5%26table%3Dblock%26spaceId%3D980718df-dec2-4ed6-86a7-8523376d1275%26expirationTimestamp%3D1720339200000%26signature%3DiJjoRess2uql3p9BIHh7V1VLjXJUtXsjn0wBvbm81Hg?table=block&id=236be66e-d479-4451-bbaf-b5ab59cc96d5&cache=v2)
위 사진과 같이 계산기를 만들어본다고 가정해보자.
우리는 각 버튼마다 클릭 이벤트를 부여해야 한다. 만들어야 하는 화면 구성을 잘 보면 숫자가 0부터 9까지 있다.
이 경우 우리는 매우 유사한 코드를 반복적으로 사용해야 한다.
// 숫자 버튼을 누르면 어떤 숫자를 눌렀는지 텍스트를 출력하는 코드
document.querySelector('#num-0').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
document.querySelector('#num-1').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
document.querySelector('#num-2').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
document.querySelector('#num-3').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
document.querySelector('#num-4').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
document.querySelector('#num-5').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
document.querySelector('#num-6').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
document.querySelector('#num-7').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
document.querySelector('#num-8').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
document.querySelector('#num-9').addEventListener('click', (e) => {
console.log(e.target.textContent);
});
이 코드는 ID가 num-0 ~ num-9까지인 요소를 선택해서 각각 클릭 이벤트를 준다.
이때 코드에서 다른 점은 ID에서 num- 뒤에 붙는 숫자 뿐이다. 이를 배열로 만들어 배열 반복문인 forEach를 사용한다면 훨씬 짧게 만들 수 있다.
const numArr = Array.from({ length: 10 }, (v, i) => i);
numArr.forEach((num) =>
document.querySelector(`#num-${num}`).addEventListener('click', (e) => {
console.log(e.target.textContent);
})
);
Array.from 을 이용해서 숫자 배열을 만든 후 forEach로 반복적으로 요소를 선택하게 했고, 템플릿 문자열을 통해 달라지는 부분을 변수로 사용했다.
![notion image](https://www.notion.so/image/https%3A%2F%2Ffile.notion.so%2Ff%2Ff%2F980718df-dec2-4ed6-86a7-8523376d1275%2F6de1b459-1da9-4956-a656-4dbfd4d1937d%2FUntitled.png%3Fid%3Df74edb92-6cd3-4c0b-823d-dca5e877abb4%26table%3Dblock%26spaceId%3D980718df-dec2-4ed6-86a7-8523376d1275%26expirationTimestamp%3D1720339200000%26signature%3DA-GpQeLa__59bzNJQPibgs158jxfgmf_Zl6r8iefIjE?table=block&id=f74edb92-6cd3-4c0b-823d-dca5e877abb4&cache=v2)
버튼을 눌렀을 때 숫자 텍스트가 잘 출력되는 것을 볼 수 있다.