// HTML 문서 전체에서
document.getElementsByTagName(name)

// 특정 요소 내에서
element.getElementsByTagName(name)
<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>HTMLCollection</title>
    </head>
    <body>
        <ul>
            <li>김밥</li>
            <li>라면</li>
            <li>떡볶이</li>
        </ul>
        <script src="tag-name.js"></script>
    </body>
</html>
const liElements = document.getElementsByTagName("li"); // li 태그를 모두 선택
console.log(liElements); // HTMLCollection(3) [li, li, li]

/* 방법 1 - for...of 문 적용 */
for (const liElement of liElements) {
    console.log(liElement.textContent);
}
// 출력: "김밥" "라면" "떡볶이"

/* 방법 2 - for 문 적용 */
for (let i = 0; i < liElements.length; i++) { // length 속성 사용 가능
    console.log(liElements[i].textContent);
}
// 출력: "김밥" "라면" "떡볶이"

/* 방법 3 - 배열 객체로 변환해서 배열의 foreach() 메서드 적용 */

// 스프레스 구문을 사용해서 배열 객체로 변환
const arr = [...liElements];

arr.forEach(li => {
    console.log(li.textContent);
});
// 출력: "김밥" "라면" "떡볶이"

// Array.from() 메서드를 사용해서 배열 객체로 변환
const liElementsArray = Array.from(liElements);

liElementsArray.forEach(li => {
    console.log(li.textContent);
});
// 출력: "김밥" "라면" "떡볶이"
// HTML 문서 전체에서
document.getElementsByClassName(names)

// 특정 요소 내에서
element.getElementsByClassName(names)
<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>HTMLCollection</title>
    </head>
    <body>
        <ul>
            <li class="a">김밥</li>
            <li class="a">라면</li>
            <li class="a">떡볶이</li>
        </ul>
        <script src="class-name.js"></script>
    </body>
</html>
const liElements = document.getElementsByClassName("a");
console.log(liElements); // HTMLCollection(3) [li.a, li.a, li.a]

/* 방법 1 - for...of 문 적용 */
for (const liElement of liElements) {
    console.log(liElement.textContent);
}
// 출력: "김밥" "라면" "떡볶이"

/* 방법 2 - for 문 적용 */
for (let i = 0; i < liElements.length; i++) {
    console.log(liElements[i].textContent);
}
// 출력: "김밥" "라면" "떡볶이"

/* 방법 3 - 배열 객체로 변환해서 배열의 foreach() 메서드 적용 */

// 스프레스 구문을 사용해서 배열 객체로 변환
const arr = [...liElements];

arr.forEach(li => {
    console.log(li.textContent);
});
// 출력: "김밥" "라면" "떡볶이"

// Array.from() 메서드를 사용해서 배열 객체로 변환
const liElementsArray = Array.from(liElements);

liElementsArray.forEach(li => {
    console.log(li.textContent);
});
// 출력: "김밥" "라면" "떡볶이"
<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>HTMLCollection</title>
    </head>
    <body>
        <ul id="list">
            <li>김밥</li>
            <li>라면</li>
            <li>떡볶이</li>
        </ul>
        <p><li> 요소의 개수: <strong id="li-length-val">3</strong></p>
        <button type="button" id="addButton">새로운 메뉴 추가</button>
        <script src="live.js"></script>
    </body>
</html>
// HTMLCollection 가져오기
const liElements = document.getElementsByTagName("li");

// 버튼 클릭 시 새로운 <li> 요소 추가
document.getElementById("addButton").addEventListener("click", () => {
    const newLi = document.createElement("li");
    newLi.textContent = "새로운 메뉴";

    // 새로운 <li> 요소를 <ul>에 추가
    document.getElementById("list").appendChild(newLi);

    // <li> 요소의 개수 실시간 확인
    const liElementsLength = liElements.length; // 이미 선언했던 liElements의 length가 실시간 반영됨
    document.getElementById("li-length-val").textContent = liElementsLength;
});
브라우저에서 실제 표시된 모습 버튼을 클릭해 보세요!