dom isElement 元素节点判断

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>contains</title>
</head>
<body>
    <div id="p-node">
        <div id="c-node">子节点内容</div>
    </div>
    <script>
    var pNode=document.getElementById('p-node');
    var cNode=document.getElementById('c-node');
    //判断元素节点pnode是否包含cnode元素节点
    alert(pNode.contains(cNode));
    //判断cnode元素节点是否包含 文本节点
    alert(cNode.contains(cNode.childNodes[0]));
    //判断pnode元素节点是否包含 文本节点
    alert(pNode.contains(cNode.childNodes[0]));
    //***Ie低版本只支持元素节点包含判断
    /**
     * 兼容判断包含关系
     * @param  {[type]} a 上层节点
     * @param  {[type]} b 下层节点
     * @return {[type]}   [description]
     */
    function fixContaion(a,b){
        try{

            while(b=b.parentNode){
                if(b===a){
                //如果b<a(a为父,b为子)循环向上查找b的父节点直到他们是同层关系(a===b)
                    return true;
                }
                //如果b>a(如果b为父,a为子),肯定找不到,返回fales
                return false;
            }
        }catch(e){
            //对于游离于dom树外的节点,返回false.
            return false;
        }
    }
    alert(fixContaion(cNode,pNode)); //false
    
    </script>
</body>
</html>

posted @ 2017-05-08 14:27  皇家玄学团  阅读(2027)  评论(0编辑  收藏  举报