1

tagName でフィルタリングされた特定の parentNode を取得するために使用する、getParentNode という名前の関数を作成します。コードは次のとおりです。関数が「未定義」を返す理由がわかりません。特定のparentNodeまたはnullを返す必要があると思います。orz! コードはhttp://jsfiddle.net/52ed6/2/にもあります

<html>
    <body>
        <ul>
            <li>HTML</li>
            <li>CSS</li>
            <li>
                <div>
                    <span id="reply">Reply</span>
                </div>
            </li>
        </ul>

        <script>
        // Get specific parentNode
        function getParentNode(obj, selector){
            if (obj.parentNode) {
                if ( obj.parentNode.nodeName.toLowerCase() === selector ) {
                    return obj.parentNode;
                } else {
                    getParentNode(obj.parentNode, selector);
                }
            } else {
                return null;
            }
        }
        var reply = document.getElementById('reply');
        // The function getParentNode() novalid
        // The next statement popup "undefined", why?
        alert(getParentNode(reply, 'li'))
        </script>
    </body>
</html>
4

4 に答える 4