JavaScript遞歸注意事項

var svg_node = document.getElementById("svgnode")

function parents(posnode,selector)
{
    var flag = false;
    var initials = selector.substr(0,1)
    var aim_parent = posnode.parentNode;
    
    switch(initials){
        
        case "#":
            selector = substring(1,selector.length);
            flag = [].slice.call(aim_parent.id).indexOf(selector) > -1;
        break;
        case ".":
            selector = substring(1,selector.length);
            flag = [].slice.call(aim_parent.classList).indexOf(selector) > -1;
        break;
        default:
            flag = aim_parent.tagName.toLowerCase() === selector;
        break;

    }

    if (flag) {
       return aim_parent;
    }
     
      // 遞歸調用時,必須在遞歸調用前面加個return,不然接收的變量會是undefined
      return parents(aim_parent, selector);
}


//  若是在遞歸調用前面沒有return,則k_dom的值會爲undefined
var k_dom = parents(svg_node,"li");
相關文章
相關標籤/搜索