zoukankan      html  css  js  c++  java
  • DOM-判断元素节点类型

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

    判断节点类型:

    <body>
        <div id="test">aaa</div>
        <!--这是一个注释节点-->
        <script>
            var isElement = function (el){
                return !!el && el.nodeType === 1;//注意这个return 和 !!el的判断
            }
            var a = {
               nodeType: 1
            }
            console.log(isElement(document.getElementById("test")));
            console.log(isElement(document.getElementById("test").nextSibling));
            console.log(isElement(a));
        </script>
    </body>

    更严谨的判断方法

    <body>
        <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>
    </body>
  • 相关阅读:
    Git 最全命令使用
    git 配置(实用)
    用Redis进行实时数据排名
    最长上升子序列
    KMP算法
    计算星期几【基姆拉尔森公式】
    集合划分(贝尔数)
    合数分解(质因数分解)
    乘法逆元
    扩展欧几里得算法
  • 原文地址:https://www.cnblogs.com/darr/p/4694172.html
Copyright © 2011-2022 走看看