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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM