dom contains 包含关系

Posted 皇家玄学团

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了dom contains 包含关系相关的知识,希望对你有一定的参考价值。

<!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>

 

以上是关于dom contains 包含关系的主要内容,如果未能解决你的问题,请参考以下文章

一个小误区 JS中的contains

js中contains()方法的了解

$.contains(a,b)

java判断包含关系contains方法的使用

contains()方法

角度 - DOM .contains() 找不到元素并且 parentNode 为空