>웹 프론트엔드 >JS 튜토리얼 >`getElementsByClassName`이 JavaScript에서 배열을 반환하지 않는 이유는 무엇입니까?

`getElementsByClassName`이 JavaScript에서 배열을 반환하지 않는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-06 12:23:15719검색

Why Doesn't `getElementsByClassName` Return an Array in JavaScript?

getElementsByClassName은 배열이 아닌 HTMLCollection을 반환합니다.

JavaScript에서 document.getElementsByClassName 메서드는 지정된 항목과 일치하는 DOM 요소 컬렉션을 반환합니다. 수업 이름. 그러나 이 컬렉션은 배열이 아니라 HTMLCollection입니다.

최신 브라우저(Firefox 3 이상)에서는 this를 설정하여 Array.forEach 메서드를 HTMLCollection과 함께 사용할 수 있습니다. HTMLCollection에 대한 forEach 함수의 값입니다. 방법은 다음과 같습니다.

var els = document.getElementsByClassName("myclass");

Array.prototype.forEach.call(els, function(el) {
  // Do something with the element
});

// Or, in ES6+
[].forEach.call(els, (el) => {
  // Do something with the element
});

ES6를 사용하는 보다 현대적인 접근 방식은 Array.from을 사용하여 HTMLCollection을 실제 배열로 변환하는 것입니다.

Array.from(els).forEach((el) => {
  // Do something with the element
});

이 값을 설정하여 또는 Array.from을 사용하면 마치 배열인 것처럼 forEach 메서드를 사용하여 HTMLCollection을 반복할 수 있습니다. Internet Explorer 8 이하와 같은 이전 브라우저는 이 접근 방식을 지원하지 않으며 HTMLCollection 대신 NodeList를 반환합니다.

위 내용은 `getElementsByClassName`이 JavaScript에서 배열을 반환하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.