如何判斷出一個(gè)js對(duì)象是否一個(gè)dom對(duì)象
我們?cè)趯慾s代碼時(shí)有時(shí)需要判斷某個(gè)對(duì)象是不是DOM對(duì)象,然后再進(jìn)行后續(xù)的操作,這里我給出一種兼容各大瀏覽器,同時(shí)又算是比較穩(wěn)妥的一種方法。
要判斷一個(gè)對(duì)象是否DOM對(duì)象,首先想到的無非就是它是否具有DOM對(duì)象的各種屬性或特征,比如是否有nodeType屬性,有tagName屬性,等等。判斷的特征越多,也就越可靠,因?yàn)楫吘刮覀冏远x的js對(duì)象也可以有那些屬性。還有其他方法嗎?
在DOM Level2標(biāo)準(zhǔn)中定義了一個(gè)HTMLElement對(duì)象,它規(guī)定所有的DOM對(duì)象都是HTMLElement的實(shí)例,所以我們可以利用這點(diǎn)來判斷一個(gè)對(duì)象是不是DOM對(duì)象:如果該對(duì)象是HTMLElement的實(shí)例,則它肯定是一個(gè)DOM對(duì)象。在不支持HTMLElement的瀏覽器中我們則還是使用特征檢測(cè)法。
<script type="text/javascript">
//首先要對(duì)HTMLElement進(jìn)行類型檢查,因?yàn)榧词乖谥С諬TMLElement
//的瀏覽器中,類型卻是有差別的,在Chrome,Opera中HTMLElement的
//類型為function,此時(shí)就不能用它來判斷了
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>
以上就是小編為大家?guī)淼娜绾闻袛喑鲆粋€(gè)js對(duì)象是否一個(gè)dom對(duì)象全部?jī)?nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
基于js實(shí)現(xiàn)抽紅包并分配代碼實(shí)例
這篇文章主要介紹了基于js實(shí)現(xiàn)抽紅包并分配代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
頁面向下滾動(dòng)ajax獲取數(shù)據(jù)的實(shí)現(xiàn)方法(兼容手機(jī))
下面小編就為大家?guī)硪黄撁嫦蛳聺L動(dòng)ajax獲取數(shù)據(jù)的實(shí)現(xiàn)方法(兼容手機(jī))。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-05-05
如何在JavaScript中使用map()迭代數(shù)組詳細(xì)步驟
在JavaScript中循環(huán)迭代數(shù)組的方法有很多種,下面這篇文章主要給大家介紹了關(guān)于如何在JavaScript中使用map()迭代數(shù)組的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
JS中三目運(yùn)算符和if else的區(qū)別分析與示例
本文是通過示例詳細(xì)分析了JS中三目運(yùn)算符和if else的區(qū)別,是篇非常不錯(cuò)的文章,這里推薦給大家。2014-11-11
js 通過html()及text()方法獲取并設(shè)置p標(biāo)簽的顯示值
這篇文章主要介紹了js 通過html()及text()方法獲取并設(shè)置p標(biāo)簽的顯示值,需要的朋友可以參考下2014-05-05
一文詳解如何用原型鏈的方式實(shí)現(xiàn)JS繼承
JavaScript中,每當(dāng)創(chuàng)建一個(gè)對(duì)象,都會(huì)給這個(gè)對(duì)象提供一個(gè)內(nèi)置對(duì)象 [[Prototype]] 。這個(gè)對(duì)象就是原型對(duì)象,[[Prototype]] 的層層嵌套就形成了原型鏈。本文將詳細(xì)講解如何用原型鏈的方式實(shí)現(xiàn)一個(gè) JS 繼承,感興趣的可以了解下2022-04-04

