如何判断一个js对象是否一个DOM对象

我们在写js代码时有时需要判断某个对象是不是DOM对象,然后再进行后续的操作,这里我给出一种兼容各大浏览器,同时又算是比较稳妥的一种方法。

要判断一个对象是否DOM对象,首先想到的无非就是它是否具有DOM对象的各种属性或特征,比如是否有nodeType属性,有tagName属性,等等。判断的特征越多,也就越可靠,因为毕竟我们自定义的js对象也可以有那些属性。还有其他方法吗?

DOM Level2标准中定义了一个HTMLElement对象,它规定所有的DOM对象都是HTMLElement的实例,所以我们可以利用这点来判断一个对象是不是DOM对象:如果该对象是HTMLElement的实例,则它肯定是一个DOM对象。在不支持HTMLElement的浏览器中我们则还是使用特征检测法。

<script type="text/javascript">
    //首先要对HTMLElement进行类型检查,因为即使在支持HTMLElement
    //的浏览器中,类型却是有差别的,在Chrome,Opera中HTMLElement的
    //类型为function,此时就不能用它来判断了
    var isDOM = ( typeof HTMLElement === ‘object‘ ) ?
                function(obj){
                    return obj instanceof HTMLElement;
                } :
                function(obj){
                    return obj && typeof obj === ‘object‘ && obj.nodeType === 1 && typeof obj.nodeName === ‘string‘;
                }
    </script>
时间: 2024-10-23 04:28:46

如何判断一个js对象是否一个DOM对象的相关文章

js ajax 传送xml dom对象到服务器

客户端代码 1 <script> 2 var isie = true; 3 var xmlhttp = null; 4 function createXMLHTTP() {//创建XMLXMLHttpRequest对象 5 if (xmlhttp == null) { 6 if (window.XMLHttpRequest) { 7 xmlhttp = new XMLHttpRequest(); 8 } 9 else { 10 xmlhttp = new ActiveXObject("

jQuery对象转化成DOM对象

jQuery库本质上还是JavaScript代码,它只是对JavaScript语言进行包装处理,为的是提供更好更方便快捷的DOM处理与开发中经常使用的功能. 我们使用jQuery的同时也能混合JavaScript原生代码一起使用. 在很多场景中,我们需要jQuery与DOM能够相互的转换,它们都是可以操作的DOM元素, jQuery是一个类数组对象,而DOM对象就是一个单独的DOM元素. 如何把jQuery对象转成DOM对象? 利用数组下标的方式读取到jQuery中的DOM对象 用jQuery找

jquery对象并不是dom对象

jQuery对象和DOM对象相互转化 作者: 字体:[增加 减小] 类型:转载 jQuery对象就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的,其可 以使用jQuery里的方法,但是不能使用DOM的方法:例如$("#img").attr("src","test.jpg"); 这里的$("#img")就是jQuery对象: DOM对象就是Javascript固有的一些对象操作.DOM对象能使

JQ对象和原生DOM对象

相同点:两者本质上都是DOM元素. 不同点:JQ对象是在原生DOM对象上进行了一次封装,使开发人员使用起来更简洁.高效. 两者之间用法也完全不同,很说初学者经常混淆. 其实区分两者并不难, 1.语法不一样,JQ对象都是以$开头的,API也不一样(具体请查询JQ手册).     比如:$('#a').html()    //这样写就可以拿到id 叫 a里面的内容. 如果   $('#a').innerHTML  // 这样写就会报错,而且拿不到任何内容,原因就是$('#a')是JQ对象,而inne

百万年薪python之路 -- JS的BOM与DOM对象

BOM对象 location对象 location.href 获取URL location.href="URL" // 跳转到指定页面 location.reload() 重新加载页面,就是刷新一下页面 定时器 1. setTimeOut() 一段时间之后执行某个内容,执行一次 示例 var a = setTimeout(function f1(){confirm("are you ok?");},3000); var a = setTimeout("co

js基础和js操作bom和dom对象

流程控制 if判断 if (a == 1){ //判断条件写在小括号里面,大括号里面写条件判断成功后的代码内容 console.log('1111'); } else{ console.log('222'); } 多条件判断 var a = 0; if(a > 1){ // console.log('1111'); // var hhhh = document.getElementById('d1'); // hhhh.innerText = '彭于晏'; }else if(a<1){ con

jQuery 对象转成 DOM 对象

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta http-equiv="Content-Type"

jquery对象转化为DOM对象

<html> <head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title></title> <script src="http://code.jquery.com/jquery-1.11.3.js"></script></head> <bo

htm Dom对象与 Xml Dom对象的理解

html 是基于Xml的文档规范.是一种特殊的xml文档,这一点很重要 1.xml 文档的操作,java,c#,...各种语言都提供了很好的api对文档进行解析,操作.当然js 也不例外,提供了一系列的方法. 具体的方法,w3c 上都有讲解.Document,Node,   ElementNode,TextNode,AttributeNode,CommentNode,NodeList 这些都是xml的属性 xml 里面每个节点都是一个node对象, 2.html 是一种特殊的xml文档,那么特殊

jQuary教程5:传递一个dom对象

1 传递一个dom对象 //html <div></div> <p id="p"></p> //js var p = document.getElementById('p'); $('div').append(p); //执行之后的结果 <div> <p></p> </div> //注意:也会有剪切的效果. 2 调用html方法 //html <div> div里面的文本 <