Javascript 의 컬렉션 DOM 체할 수 없는 이유는 무엇 역방향으로 배열입니다.역()?

StackOverflow https://stackoverflow.com/questions/45613

  •  09-06-2019
  •  | 
  •  

문제

무엇이 문제가 될 수 있으로 반전의 배열 DOM 체로서 다음과 같은 코드:

var imagesArr = new Array();
imagesArr = document.getElementById("myDivHolderId").getElementsByTagName("img");
imagesArr.reverse();

Firefox 에서 3 때,나는 전화 reverse() 방법 스크립트 실행을 멈추고 다음과 같은 오류가 표시됩니다면 콘솔에서는 웹 개발자 도구 모음입니다.

imagesArr.reverse is not a function

imagesArr 변수를 반복할 수 있을 통해 루와 같은 요소 imagesArr[i] 액세스할 수 있다,그래서 그것은 보이지 않으로 배열을 호출할 때 reverse() 방법?

도움이 되었습니까?

해결책

기 때문에 getElementsByTag 이름이 실제로 반환된 구조입니다.그것은 비슷한 배열은 다음과 같이 색인 속성에 대한 문법적 편익이지만,그것은 훌륭한 기능들을 가지고 있습니다.예를 들어,설정 항목은 실제로 지속적으로 역동적으로 업데이트를 추가하는 경우 새로운 img 태그에서 myDivHolderId,그것은 자동으로 나타나에서 imagesArr.

http://www.w3.org/TR/DOM-Level-2-Core/core.html#ID-536297177 니다.

다른 팁

getElementsByTag() 반환된 대의 훌륭한 기능들을 가지고 있습니다.할 수 있는 변환된 배열에만 참고 있는 배열 될 것입니다 또 다른 객체를 반전하는 그것이 영향을 미치지 않습니다 DOM 노드는 위치입니다.

var listNodes = document.getElementById("myDivHolderId").getElementsByTagName("img");
var arrayNodes = Array.slice.call(listNodes, 0);
arrayNodes.reverse();

기 위해서 위치를 변경하려면,당신은 당신을 제거해야 DOM 노드를 추가 할 그들 모두는 다시 오른쪽에 위치입니다.

Array.prototype.slice.call(arrayLike, 0) 훌륭한 방법으로 변환하는 배열을 배열에만 사용하는 경우 자바 스크립트 라이브러리,그것 있습니다 실제로 제공하도 좋고 빠른 방법으로 그것을 할 수 있습니다.예를 들어,jQuery 가 $.makeArray(arrayLike).

또한 사용할 수 있는 방법을 배열에 직접된:

Array.prototype.reverse.call(listNodes);

getElementsByTag() 반환된 대의 훌륭한 기능들을 가지고 있습니다.변환해야 합된 배열한 다음 그것을 반대.

var imagesArr = [].slice.call(document.getElementById("myDivHolderId").getElementsByTagName("img"), 0).reverse();

이 질문은 세 가지고 있습니다 약간의 설명으로 일부의 해답은 여기 있으로 오래 W3C 변경 정의와 결과적으로 반환 값의 이 방법 getElementsByTagName()getElementsByClassName()

이 방법 의 시간으로 쓰고 이에 응답 객체를 반환 비어 있는지의 유형 HTMLCollection NodeList.

그것은 같은 사이의 차이는 속성 children 을 반환하는 개체의 유형 HTMLCollection 때문에 그것은 단지 구성 요소를 제외하고 텍스트 또는 의견을 노드 childNodes 을 반환하는 개체의 유형 NodeList 할 수 있기 때문에 다른 노드의 종류와 같은 텍스트 및 코멘트 뿐만 아니라.

참고:나에 접 여기에 익스프레스 나의 부족에 대한 통찰력을 이유 querySelectorAll() 방법 현재 반환 NodeList 과하지 않는 HTMLCollection 이후 그것은 독점적으로 작동 요소에 대한 노드에서 문서를 다른 아무것도 있습니다.

아마도 그것을 할 수있는 뭔가가 가진 잠재적인 범위의 다른 노드형 미래 그리고 그들에 대한 더 많은 증거래 솔루션을 알고 정말입니까?:)

편집:나는 그 뒤에 있는 근거 이 결정에 대한 선택 NodeList 과하지 않는 HTMLCollectionquerySelectorAll().

이후 그들은 건설 HTMLCollection 하고 독점적으로 전적으로 라이브 이후 이 방법은 필요가 없이 살고,기능,그들은 결정을 위해 NodeList 구현 대신에 최선의 서비스를 제공하기 위해 그 목적을 경제적으로 그리고 효율적으로 합니다.

귀하의 첫 번째 라인은 무관하지 않기 때문에 강요당하는 변수,자바 스크립트 작동이 다른 방법이다.imagesArr,지의 유형 Array(),그의 어떤 반환한 유형의 getElementsByTagName("img")입니다.이 경우에는,그 htmlcollection 객 Firefox3.

유일한 방법은 이 물체는 인덱서와 길이 있습니다.에서 작업하기 위해서는 반대로,다만 반복니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top