getElementsByName(name) 메소드는 페이지에서 name 속성을 가진 모든 요소를 가져오는 것이지만, 이 메소드로 얻는 내용은 IE와 표준 브라우저에서 다릅니다. IE에서 getElementsByName(name) 메소드로 얻은 요소는 고유한 이름 속성을 갖습니다. 즉, 표준 브라우저에서 양식에 나열된 모든 요소는 getElementsByName에서 얻은 요소입니다. (이름) 메소드는 name 속성을 가진 요소입니다(이미 이 속성이 있고 이 속성이 인위적으로 추가되었습니다). 따라서 이 방법을 사용하여 IE 브라우저의 페이지에서 이름이 있는 모든 요소를 가져오는 경우 이미 이 속성(양식 클래스 요소)이 있는 요소만 가져올 수 있지만 인위적으로 추가된 이름 속성 요소는 가져올 수 없습니다. 제거됩니다. 표준 브라우저는 이를 수행하지 않으며 페이지에서 name 속성이 있는 모든 요소를 제거합니다.
getElementsByName() 및 getElementsByTagName() 메소드의 공통점은 획득한 페이지 요소를 배열이 아닌 요소 컬렉션으로 구성한다는 것입니다(console.log(를 사용하여 인쇄할 때는 배열임에도 불구하고). ) 방화범 형태로). 획득한 데이터 결과를 보기 위해 Object.porototype.toString.apply(arr) 메소드를 사용하면 "[object Array]" 대신 "[object HTMLCollection]"을 반환합니다. 이런 방식으로 이 두 메소드로 얻은 요소 컬렉션을 배열의 일부 메소드를 호출하여 배열처럼 작동할 수는 없으며, 대신 이 컬렉션을 배열 형태로 변환하여 작동할 수 있습니다. 배열 내부의 요소가 처리됩니다.
이 요소 컬렉션에는 다음과 같은 속성과 메서드가 있습니다.
1. 요소 인덱스(index)
2. 요소 컬렉션의 길이(length)
3. item() 메서드: 다양한 인덱스 값을 전달하여 컬렉션의 해당 요소를 얻을 수 있습니다. IE에는 그러한 방법이 없습니다.
4. FF에는 name 속성이 있는 첫 번째 요소를 가져오는 명명된Item(name) 메서드도 있습니다. 이 방법은 FF에서만 사용할 수 있습니다.
요소 모음을 배열 형식으로 변환하는 방법은 여러 가지가 있습니다. 인터넷에서 검색하면 여러 가지 방법을 찾을 수 있습니다. Situ Zhengmei의 블로그 게시물 "JS가 배열과 유사한 객체를 배열 객체로 변환"에서도 교훈을 얻을 수 있습니다.
배열 변환 방법은 다음과 같습니다.