// id로 태그 선택하기
const myTag1 = document.getElementById('myNumber');
console.log(myTag1);
const myTag2 = document.getElementById('btns');
console.log(myTag2);
const myTag3 = document.getElementById('codeit');
console.log(myTag3);
const myTags1 = document.getElementsByClassName('color-btn');
console.log(myTags1);
console.log(myTags1[1]);
console.log(myTags1.length);
for (let tag of myTags1) {
console.log(tag);
}
const myTags2 = document.getElementsByClassName('red');
console.log(myTags2);
console.log(myTags2[0]);
const myTags3 = document.getElementsByClassName('white');
console.log(myTags3);
console.log(myTags3 === null);
console.log(myTags3.length);
length
프로퍼티 존재.length
프로퍼티가 없으면 유사배열 이라기보단 그냥 숫자 형태의 key로 구성된 일반객체isArray
메소드는 파라미터로 전달한 값이 배열인지 아닌지를 평가 후 불린 형태의 값으로 리턴.유사배열은 다양한 형태로 존재.
어떤 경우는 HTMLCollection의 경우 for..of 문이 사용가능하지만 안되는 경우도 존재.
배열의 기본메소드를 사용하지 못하지만, 직접 구현으로 배열처럼 사용할 수 도 있음.
하지만 직접 구현이 아닌 이미 만들어진 유사배열에 접근하는 경우엔 위 4가지 특징을 다가지고 있으므로 참고하기.
질문 1. class 속성을 통해 태그를 선택하는 방법
document
객체의getElementByClassName
메소드를 활용하면class
속성을 통해 태그 선택 가능.getElementsByClassName
메소드로 태그를 선택하면 여러개의 요소들의 묶음이기 때문에 일반적인 배열로 다룰 수 없음(유사배열)- 태그들 순서는 깊이와 관계없이 위에서부터 차례대로.
- 존재하지 않는 class 값으로 태그를 선택하면 그 값은 빈
HTMLCollection
이 됨.
질분 2. 다음의 코드 결과로 올바른 것.
const members = document.getElementsByClassName('member');
for (let i = 1; i < members.length; i++) {
if (i % 2 == 0) {
console.log(members[i]);
}
}
⇒ 인덱스 2, 4, 6 일대 해당 index에 있는 요소 출력.
(유사배열도 Length를 가진다는 것 시사)
document.getElementsByTagName('태그이름')
const btns = document.getElementByTagName('button');
HTML 문서 내에 있는 모든
button
태그 선택.
document.getElementsByClassName('class')
메소드와 마찬가지로 태그 이름으로 요소를 찾는 경우에 여러 개의 요소가 선택될 수 있기 때문에 메소드 이름에 Element(s)
, s 가 있고, 실행결과 역시 HTMLCollection을 리턴.‘ * ‘ 값을 전달하면 모든 태그 선택
const btns = document.getElementsByTagName('button');
const allTags = document.getElemntsByTagName('*');