[TIL] JS 이벤트를 줘야할 때 주의해야할 점(HTML Collection)
classname은 dom집합체(HTML collection)를 가져오기 떄문에 이벤트리스너가 불가하다. 그래서 특정해줘야한다.
const canvas = document.getElementsByClassName("jsCanvas");
function onMouseMove(event) {
console.log(event);
}
if (canvas) {
console.log(canvas);
canvas.addEventListener("mousemove", onMouseMove);
}
- 개발자도구에서 확인했을 때
여기서 왜 자꾸 이벤트리스너에 에러가 뜨는지 구글링해본 결과.
HTML collection으로 가져올 땐 이벤트가 필요한 elements에 배열의 인덱스로 접근할 수 있고, .속성명의 방식으로도 접근할 수 있다.
그래서 className으로 가져온다면?
const canvas = document.getElementsByClassName("jsCanvas");
function onMouseMove(event) {
console.log(event);
}
if (canvas) {
canvas[0].addEventListener("mousemove", onMouseMove);
}
라고 접근해주어야한다. 아니면 id를 가져오는 방법도 있다.
id는 가져오는 테그 자체에 접근하여 console.log(canvas)
로 확인해보면 아래 사진처럼 접근하고있다.
Author And Source
이 문제에 관하여([TIL] JS 이벤트를 줘야할 때 주의해야할 점(HTML Collection)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@duswn38/TIL-JS-이벤트를-줘야할-때-주의해야할-점HTML-Collection저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)