▶ getElementsByClassName 정리
JavaScript의 DOM 선택자 중 하나인 getElementsByClassName
▶ 이 명령어가 뭐하는 건지
getElementsByClassName은 HTML 요소 중에서 특정 클래스 이름을 가진 모든 요소를 한 번에 선택하는 명령어.
📌 여러 개의 요소가 선택되며, 반환값은 HTMLCollection이라는 유사 배열 형태.
▶ 명령어 문법
document.getElementsByClassName("클래스이름");
- document는 현재 HTML 문서 전체를 의미.
- 괄호 안에 클래스 이름을 문자열 형태로 넣음.
- 여러 요소가 선택되기 때문에 결과는 배열처럼 생긴 HTMLCollection 임.
▶ 파라미터에 어떤 게 들어갈 수 있는지?
- 오직 클래스 이름만 문자열로 전달할 수 있음. (CSS 선택자처럼 .class 말고 "class"만 넣어야 함)
document.getElementsByClassName("menu"); // class="menu"
document.getElementsByClassName("box red"); // class="box red" (두 클래스 모두 있는 요소)
▶ 주로 어떻게 쓰는지
- 같은 클래스명을 가진 요소들을 한꺼번에 선택해서 스타일을 바꾸거나,
- 반복문으로 이벤트를 달거나,
- 내용을 변경할 때 사용.
보통 반복문과 함께 많이 사용함:
- for 문
- for...of
- Array.from(...).forEach(...)
▶ 예시
✅ 여러 버튼에 같은 클래스가 있을 때, 모두 비활성화하기
<button class="btn">버튼1</button>
<button class="btn">버튼2</button>
<button class="btn">버튼3</button>
<script>
const buttons = document.getElementsByClassName("btn");
for (let i = 0; i < buttons.length; i++) {
buttons[i].disabled = true;
}
</script>
✅ 클릭 시 모든 .box에 배경색 넣기
<div class="box">박스1</div>
<div class="box">박스2</div>
<div class="box">박스3</div>
<button onclick="highlightBoxes()">색 바꾸기</button>
<script>
function highlightBoxes() {
const boxes = document.getElementsByClassName("box");
for (let box of boxes) {
box.style.backgroundColor = "yellow";
}
}
</script>
✅ 요약 정리

※ 유사배열 (HTMLCollection)
- 유사 배열(HTMLCollection)은 배열처럼 길이를 가지고, 인덱스를 사용하여 접근할 수 있는 객체임.
- 하지만 배열이 아니기 때문에 배열 메서드(예: forEach, map, filter 등)를 사용할 수 없음.
- 그래서 보통 배열처럼 사용하려면 배열로 변환해야 함.
- 예를 들어, Array.from()이나 spread operator(...)를 사용해서 유사 배열을 정식 배열로 바꿔야 배열 메서드를 사용할 수 있음.
const buttons = document.getElementsByClassName("btn");
// HTMLCollection은 배열이 아니므로 아래처럼 배열로 바꿔야 forEach 같은 배열 메서드를 사용 가능
const buttonsArray = Array.from(buttons);
buttonsArray.forEach(button => {
button.style.color = "red"; // 이제 forEach 사용 가능
});
❌ 오류 나는 예제 (유사 배열을 진짜 배열처럼 쓸 때)
<button class="btn">버튼1</button>
<button class="btn">버튼2</button>
<button class="btn">버튼3</button>
<script>
const buttons = document.getElementsByClassName("btn");
// ❌ 여기서 오류가 납니다!
buttons.forEach(btn => {
btn.style.backgroundColor = "pink";
});
</script>
❗오류 메시지 예시 (브라우저 콘솔에서)
Uncaught TypeError: buttons.forEach is not a function
✅ 올바른 사용법 (배열로 변환)
<script>
const buttons = document.getElementsByClassName("btn");
// 배열로 바꾼 뒤 forEach 사용
const realButtons = Array.from(buttons);
realButtons.forEach(btn => {
btn.style.backgroundColor = "pink";
});
</script>
◈ => {}는 function() {}를 더 짧게 쓴 화살표 함수(Arrow Function) 문법.
🔁 비교
✅ 전통적인 함수 표현
const sayHi = function() {
console.log("안녕!");
};
✅ 화살표 함수 표현 (짧게 줄임)
const sayHi = () => {
console.log("안녕!");
};
📌 기본 구조
(매개변수) => {
실행할 코드
}
✨ 더 간단한 줄임
매개변수가 하나일 때는 괄호 생략 가능:
name => {
console.log(name + "님 안녕하세요");
}
코드가 한 줄이고 return만 있다면 {}와 return도 생략 가능:
// 일반 함수
const plus = function(a, b) {
return a + b;
};
// 화살표 함수 (짧게 줄인 버전)
const plus = (a, b) => a + b;
🔒 화살표 함수의 특징 (기본 function과 다른 점)
- this가 다르게 동작함 (고급 개념, 지금은 몰라도 괜찮아요!)
- 짧고 간결한 코드에 적합
▶ function과 => (화살표 함수) 중 언제 어떤 걸 쓰는 게 좋은지 상황별로 쉽게 정리
✅ 1. 기본 비교 정리

✅ 2. 언제 function을 쓰면 좋을까?
🔸 일반적인 함수 정의
🔸 this를 직접 다뤄야 할 때
🔸 생성자 함수로 객체 만들 때
🔸 arguments 객체가 필요할 때
function showInfo() {
console.log(this.name); // this가 중요할 때
}
✅ 3. 언제 =>를 쓰면 좋을까?
🔸 간단한 함수일 때
🔸 콜백 함수나 반복문 내부에서 쓰일 때
🔸 this를 그대로 유지하고 싶을 때
// 배열의 각 요소를 제곱
const nums = [1, 2, 3];
const squares = nums.map(n => n * n); // 짧고 깔끔
// 이벤트 리스너 안에서 this 유지하려고 쓸 때
class Counter {
constructor() {
this.count = 0;
document.getElementById("btn").addEventListener("click", () => {
this.count++; // function 썼다면 this가 달라졌을 수도 있음
console.log(this.count);
});
}
}
🎯 요약

'국비지원 - 실버마케팅(코딩) 250206~' 카테고리의 다른 글
| "이 안에 그 값 있나요? 자바스크립트 includes() 쉽게 배우기" (0) | 2025.05.08 |
|---|---|
| "버튼 클릭하면 스타일 바뀌게 하고 싶다면? classList.add & remove 배우기" (2) | 2025.05.08 |
| "CSS 선택자로 HTML 요소 찾기! 자바스크립트 querySelector 쉽게 배우기" (0) | 2025.05.08 |
| "한 개만 고를까? 여러 개 고를까? radio & checkbox 완전 정리" (5) | 2025.05.08 |
| "파일끼리 어떻게 연결하지? 자바스크립트 import / export 쉽게 배우기" (0) | 2025.05.08 |