
addEventListener를 활용한 동적 상품 필터링 기능 구현
오늘은 사용자가 드롭다운에서 상품 개수와 정렬 옵션을 변경할 때마다 실시간으로 상품 목록이 업데이트되도록 하는 인터랙티브 기능을 완성했습니다.
const limitSelect = document.querySelector("#limit-select");
if (limitSelect) {
limitSelect.addEventListener("change", (event) => {
const selectedLimit = event.target.value;
updateCardProducts(selectedLimit, sortSelect?.value);
});
}
const sortSelect = document.querySelector("#sort-select");
if (sortSelect) {
sortSelect.addEventListener("change", (event) => {
const selectedSort = event.target.value;
updateCardProducts(limitSelect?.value, selectedSort);
});
}
if (limitSelect) {
// 이벤트 리스너 등록
}
// 올바른 순서
document.body.innerHTML = Homepage(); // 1. HTML 먼저 렌더링
const limitSelect = document.querySelector("#limit-select"); // 2. 그 후 요소 선택
limitSelect.addEventListener("change", ...); // 3. 이벤트 리스너 등록
DOM 요소에 이벤트 리스너(Event Listener)를 등록하는 JavaScript 메서드입니다. 사용자의 행동(클릭, 키보드 입력, 드롭다운 변경 등)에 반응하여 특정 함수를 실행합니다.
element.addEventListener(event, function, options)
// 클릭 이벤트
button.addEventListener('click', () => {
console.log('버튼 클릭됨!');
});
// 드롭다운 변경 이벤트 (오늘 사용한 것)
select.addEventListener('change', (event) => {
console.log('선택 변경:', event.target.value);
});
// 키보드 입력 이벤트
input.addEventListener('input', (event) => {
console.log('입력값:', event.target.value);
});
// 폼 제출 이벤트
form.addEventListener('submit', (event) => {
event.preventDefault(); // 기본 동작 막기
console.log('폼 제출됨');
});
selectElement.addEventListener('change', (event) => {
console.log(event.target); // 이벤트가 발생한 DOM 요소
console.log(event.target.value); // 현재 선택된 값
console.log(event.type); // 이벤트 타입 ('change')
console.log(event.timeStamp); // 이벤트 발생 시점
});