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>