问答详情
源自:4-3 如何判断节点是html和xml元素节点

什么叫属性法容易被攻破,用功能法?

请大神们解释下

提问者:凉鹜 2017-12-07 19:13

个回答

  • 慕移动9181930
    2022-03-24 01:46:01

    style.css样式里有写

  • qq_杀意隆_0
    2017-12-08 08:56:12

    视频里说的很清楚了。

    dom元素节点具有nodeType属性,属性法仅仅是判断一个对象的nodeType是否为1;

    但是可以自己创建这样1个对象:

    var obj={nodetype:1}

    这个对象并不是dom对象,但是用属性法判断

    function isElement(ele){ 
        return ele&&ele.nodeType===1;
    }
    isElement(obj);//这样也会返回true,但是obj并不是dom节点。

    上面就是属性法判断的不足之处,如果用功能法:

    function isElement(ele){
    
        try{
        
            var div=document.createElement('div');
            div.appendChild(ele);//把ele做为子节点添加到div里
            div.removeChild(ele);//把ele从div里移除
        }catch(e){
           return false;
        }
    }
    var obj={nodetype:1}
    isElement(obj)//返回false

    由于obj不是dom对象,所以它不能添加到div里或从div里移除(obj不具备这些功能)。这就是功能法