getElementsByClassName

버튼을 눌렀을 때 Hello 또는 Bye가 보이는 버튼 만들기

(1. 기본값이 Hello인 버튼 만들기)
2. 홀수번 클릭시 Bye로 변경
3. 그 외의 경우(짝수번 클릭시) Hello로 변경


var count=0;

document.getElementByClassName('인사').addEventListener('click', function () {
  count += 1;
  if (count % 2 == 1) {
    인사.innerHTML = 'Bye'
  }
  else {
    인사.innerHTML =
      'Hello'
  }
});

❌ 에러 발생 ❌

caught TypeError: document.getElementByClassName is not a function

getElementByClassName()getElementById()와 달리 동일한 class명이 존재할 수 있다. 따라서 getElementByClassName()getElementsByClassName이라고 작성해야한다.

또한, getElementByClassName()는 컬렉션 객체를 반환하기 때문에 이벤트 리스너를 등록하려면 특정 index로 요소를 선택한 후 이벤트 리스너를 등록해야한다.


var count=0;
var 인사하기 = document.getElementsByClassName('인사')[0];

인사하기.addEventListener('click', function () {
  count += 1;
  if (count % 2 == 1) {
    인사.innerHTML = 'Bye';
  } else {
    인사.innerHTML = 'Hello';
  }
});
profile
개발자가 되기 위해 성장 중

1개의 댓글

comment-user-thumbnail
2023년 5월 7일

언급하신 컬렉션 객체 는 배열처럼 보이지만, 사실 배열이 아니랍니다!
그래서 배열 메서드들을 전부 사용하지는 못해요ㅠ
배열처럼 쓰고 싶으면 타입 캐스트로 바꿔줘야 하니 한 번 찾아보세요😊

답글 달기