简介 目录 评价 推荐
  • qq_上帝的色子_0 2019-04-08

    判断一个节点是否是元素节点的方法:

    <div id="test">aaa</div>

    <!--这是一个注释节点-->

    <script>

    var testDiv = document.createElement('div');

    var isElement = function (obj) {

        if (obj && obj.nodeType === 1) {//先过滤最简单的

            if( window.Node && (obj instanceof Node )){ //如果是IE9,则判定其是否Node的实例

                return true; //由于obj可能是来自另一个文档对象,因此不能轻易返回false

            }

            try {//最后以这种效率非常差但肯定可行的方案进行判定

                testDiv.appendChild(obj);

                testDiv.removeChild(obj);

            } catch (e) {

                return false;

            }

            return true;

        }

        return false;

    }

    var a = {

       nodeType: 1

    }

    console.log(isElement(document.getElementById("test")));

    console.log(isElement(document.getElementById("test").nextSibling));

    console.log(isElement(a));

    </script>


    0赞 · 0采集
  • 慕数据0028241 2018-04-16
    1. 双感叹号表示判断el这个参数是否存在;

    2. http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object/27112297#27112297

    0赞 · 0采集
  • 超级无敌可爱的美少女 2017-11-20
    完美的判断对象是不是 element 用于辨别 var a={nodeType:1}; 使用是否可增加节点删除节点,来判定
    截图
    0赞 · 2采集
  • Fireflies_light 2017-10-27
    更多有关节点的链接
    截图
    0赞 · 0采集
  • Ethreal 2017-08-14
    obj instanceof Node 中的obj 可能来自另外一个文档的对象,继续使用 appendChild 、removeChild 来判断是否是节点,如图,实现对象过滤
    0赞 · 0采集
  • 慕设计9023129 2017-07-27
    元素节点类型的判断 http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object/27112297#27112297
    1赞 · 1采集
  • orangewangjie3473319 2017-06-03
    其他方案 参考网址
    截图
    0赞 · 1采集
  • orangewangjie3473319 2017-06-03
    完美的判断方法
    截图
    0赞 · 0采集
  • orangewangjie3473319 2017-06-03
    这种验证元素节点的方法存在漏洞
    截图
    0赞 · 1采集
  • qq_s1思念丶_03917798 2017-03-20
    !!的目的是,当操作数是undefined或null时能够返回false
    截图
    3赞 · 4采集
  • 小鹏_ing 2017-02-28
    !!的目的是,当操作数是undefined或null时能够返回false
    0赞 · 0采集
  • Airplane 2017-02-22
    元素节点类型的判断 http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object/27112297#27112297
    截图
    2赞 · 5采集
  • Airplane 2017-02-22
    try{ testDiv.appendChild(obj); //把要检验的obj作为子节点添加给testDiv节点 testDiv.removedChild(obj);//把testDiv中为obj的子节点移除 }catch(e){ return false;//如果以上两者运行中有错误则返回false } 比如你传入的是变量a 但是变量a不是一个节点元素,所以就不能作为节点被添加到testDiv中或者被删除,则会返回false,而如果a是被createElementNode(’a‘)之后,则这个a就是一个被创建的元素节点,可以被添加到任何一个元素节点作为子节点或者被删除,而案例中多出这一步检验也是因为当你使用isElement这个方法检验obj是不是一个元素节点的时候容易出错,也就是可以把一个声明中有nodetype=1的json对象也当做成元素节点,很显然这个方法不严谨也不符合检测的目的,所以才要检测真假:【如果obj本身就是元素节点,则就必然可以作为子节点被添加和被删除,则返回判断结果为真! 如果obj本身是有声明过nodetype=1的json对象,即使obj在第一层if判断中nodetype=1通过,则第二层检测到他不能作为子节点被添加和被删除,则obj必然不是元素节点,返回判断结果为假!】
    截图
    1赞 · 1采集
  • Airplane 2017-02-22
    obj instanceof Node 中的obj 可能来自另外一个文档的对象,继续使用 appendChild 、removeChild 来判断是否是节点,如图,实现对象过滤
    截图
    1赞 · 0采集
  • Airplane 2017-02-22
    用obj.nodeType === 1 来判断元素节点时,由于其不能过滤对象,所以可以如图中一样伪造一个obj来绕过这个验证。
    截图
    1赞 · 0采集
  • Airplane 2017-02-22
    !!一般用来将后面的表达式转换为布尔型的数据(boolean). 此处 !!的目的是,当操作数是undefined或null时能够返回false。 因为javascript是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型,类似的如: a=parseInt("1234"); a="1234"+0 //转换为数字
    截图
    1赞 · 0采集
  • Lubywu 2017-02-16
    obj.nodeType === 1 并不能过滤对象,obj instanceof Node 中的obj 可能来自另外一个文档的对象,继续使用 appendChild 、removeChild 来判断是否是节点
    截图
    0赞 · 0采集
  • coldfish 2016-11-17
    元素节点类型的判断
    截图
    0赞 · 0采集
  • P妞酱酱 2016-10-30
    ffff
    截图
    0赞 · 1采集
  • niupizhi203522025 2016-10-29
    4-2 如果不加!!el当el不存在的时候会报错,因为el是undefined就没有nodeType,加上!!el由于!!el为false,&&不会再执行之后的监测nodeType语句
    0赞 · 0采集
  • qweqwe13123123 2016-10-17
    核心语句 appendChild(obj) removeChild(obj) 如果发送错误 表示这个不是元素节点
    截图
    0赞 · 0采集
  • qq_盗版鸡哥_0 2016-10-15
    if(window.Node && (obj instanceof Node)){ return true; }这段代码不理解 +1积分 [已采纳 子木李 的回答] 这句话这么解释,window.Node,是查看window里是否有这么一个Node对象,然后obj instanceof Node是说明obj是否是Node对象的一个实例,即是不是new Node出来的,满足了这两个条件,obj就是Node类型
    0赞 · 0采集
  • crisita 2016-10-11
    可以参考这个链接http://stackoverflow.com/questions/384286/javascript-isdom-how-do-you-check-if-a-javascript-object-is-a-dom-object/27112297#27112297
    截图
    0赞 · 1采集
  • a共同成长 2016-08-23
    判断是否为元素节点的方法
    截图
    0赞 · 0采集
  • cindyj9 2016-07-16
    元素节点类型的判断
    截图
    0赞 · 0采集
  • Even何斌 2016-06-10
    if(obj&&obj.nodeType === 1)这里是先判断obj是否存在,再去判断obj是否是元素节点。
    0赞 · 0采集
  • miragele 2016-05-03
    !!一般用来将后面的表达式转换为布尔型的数据(boolean). 因为javascript是弱类型的语言(变量没有固定的数据类型)所以有时需要强制转换为相应的类型,类似的如: a=parseInt("1234"); a="1234"+0 //转换为数字 b=1234+"" //转换为字符串 c=someObject.toString() //将对象转换为字符串 其中第1种、第4种为显式转换,2、3为隐式转换. 布尔型的转换,javascript约定和c类似,规则为 : false、undefinded、null、0、"" 为 false ; true、1、"somestring"、[Object] 为 true . !!el表示判断是否el存在,存在为true,反之为false.
    截图
    0赞 · 0采集
  • 麻小吉 2016-03-23
    元素节点类型的判断
    截图
    0赞 · 0采集
  • 麻小吉 2016-03-23
    判断一个节点是否是元素节点的方法: <div id="test">aaa</div> <!--这是一个注释节点--> <script> var testDiv = document.createElement('div'); var isElement = function (obj) { if (obj && obj.nodeType === 1) {//先过滤最简单的 if( window.Node && (obj instanceof Node )){ //如果是IE9,则判定其是否Node的实例 return true; //由于obj可能是来自另一个文档对象,因此不能轻易返回false } try {//最后以这种效率非常差但肯定可行的方案进行判定 testDiv.appendChild(obj); testDiv.removeChild(obj); } catch (e) { return false; } return true; } return false; } var a = { nodeType: 1 } console.log(isElement(document.getElementById("test"))); console.log(isElement(document.getElementById("test").nextSibling)); console.log(isElement(a)); </script>
    0赞 · 0采集
  • 切兔子 2016-03-02
    <div id="test"></div> <script> var oTest=document.getElementById('test'); var isElement=function(obj){ if(obj && obj.nodeType === 1){ if(window.Node && (obj instanceof Node)){ return true; } try{ oTest.appendChild(obj); oTest.removeChild(obj); }catch(e){ return false; } return true; } return false; } </script>
    0赞 · 0采集
数据加载中...
开始学习 免费