スニぺったん

無料のコードスニペットを掲載しています。言語ごとにコードスニペットを検索し、利用することが可能です。コードのライセンスはトップページをご覧ください。

  • JavaScript
  • ノードを再帰的に検索してテキストに一致するノードを返す関数 (findNodeByText)

ノードを再帰的に検索してテキストに一致するノードを返す関数 (findNodeByText)

総合評価: - 作成日: 2025-10-05

コメント:
Braveブラウザで動作確認済み。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>findNodeByText</title>
    <script>
        /**
         * textに一致するノードを再帰的に検索して返す。
         */
        function findNodeByText (node, text) {
            if (node.textContent === text) {
                return node
            }

            for (let child of node.childNodes) {
                let found = findNodeByText(child, text)
                if (found) {
                    return found
                }
            }

            return null
        }

        document.addEventListener('DOMContentLoaded', () => {
            let root, node

            root = document.getElementById('root')
            
            node = findNodeByText(root, 'EEE')
            console.log(node.textContent) // EEE

            node = findNodeByText(root, 'nothing')
            console.log(node) // null
        })
    </script>
</head>
<body>
    <div id="root">
        <div>
            <span>AAA</span>
            <span>BBB</span>
        </div>
        <ul>
            <li>CCC</li>
            <li>DDD</li>
            <li>
                <ul>
                    <li>EEE</li>
                    <li>FFF</li>
                </ul>
            </li>
        </ul>
    </div>
</body>
</html>