// HTMLドキュメント全体から
document.getElementsByTagName(name)

// 特定の要素内から
element.getElementsByTagName(name)
<!DOCTYPE html>
<html lang="ja">
    <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="ja"> 
    <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="ja"> 
    <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;
});
ブラウザーで実際に表示された様子 ボタンをクリックしてみてください!