猿问

JS面试题:写一个方法,传入一个DOM元素,找到它所有祖先元素中div的个数,并返回。

我的思路是使用递归,一层层往上找。判断元素名是DIV就返回。下面是我写的一部分,但实现不了。求大神帮忙。

function findDiv(dom) {

        var result = [];

        var parents = dom.parentNode;

        if (parents.nodeName.toUpperCase() === "BODY") {

            return;

        } else if (parents.nodeName.toUpperCase() === "DIV") {

            result.push(parents.nodeName);

        }

        // console.log(result);

        return result;

    }


lxfawh
浏览 2846回答 1
1回答

千秋此意

function findDiv(node) {     var result = [];          while ((node = node.parentNode, node) !== null) {         if (node.nodeName.toUpperCase() === 'DIV') {             result.push(node);         }     }          return result; }加个循环上就行了-----  补充下,才发现你好像是要用递归写  -----function findDiv(node, result) {     var result = result || [];     var parent = node.parentNode;     if (parent === null) {         return result;     } else {         return findDiv(parent, ((parent.nodeName.toUpperCase() === 'DIV') ? result.concat([parent]) : result));     } }
随时随地看视频慕课网APP
我要回答