javascript
html判断是否有某个元素,JS基础篇--如何用JavaScript判断dom是否有存在某class的值?...
例如:
判斷html節(jié)點(diǎn)的class是否有no-js。
1.jquery的實(shí)現(xiàn)方式
$("html").hasClass('no-js');
jquery源碼的實(shí)現(xiàn)方式:
var rclass = /[\t\r\n\f]/g;
jQuery.fn.extend({
hasClass: function(selector) {
var className = " " + selector + " ",
i = 0,
l = this.length;
for (; i < l; i++) {
if (this[i].nodeType === 1 &&
(" " + this[i].className + " ").replace(rclass, " ").indexOf(className) > -1) {
return true;
}
}
return false;
}
})
源碼里面用到了nodeType,nodeType是HTML DOM 的nodeType 屬性,nodeType 屬性返回以數(shù)字值返回指定節(jié)點(diǎn)的節(jié)點(diǎn)類型。常用的一般有三種:
如果節(jié)點(diǎn)是元素節(jié)點(diǎn)(Element),則 nodeType 屬性將返回 1。
如果節(jié)點(diǎn)是屬性節(jié)點(diǎn)(Attr),則 nodeType 屬性將返回 2。
如果節(jié)點(diǎn)是文本節(jié)點(diǎn)(Text),則nodeType 屬性將返回 3。
例如,獲得 body 元素的節(jié)點(diǎn)類型:
document.body.nodeType;//1
如果想了解更多的節(jié)點(diǎn)類型,可查看:HTML DOM nodeType 屬性
2.js的實(shí)現(xiàn)方式
function hasClass(element, cls) {
return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}
hasClass(document.querySelector("html"), 'no-js');
3.H5的classList
說明下:
字符串的indexOf方法是無法區(qū)分.no-js和.no-js-indeed這樣的類;
類名的分隔符可能不是空格,還有可能是t等。
代碼:
var hasClass = (function(){
var div = document.createElement("div") ;
if( "classList" in div && typeof div.classList.contains === "function" ) {
return function(elem, className){
return elem.classList.contains(className) ;
} ;
} else {
return function(elem, className){
var classes = elem.className.split(/\s+/) ;
for(var i= 0 ; i < classes.length ; i ++) {
if( classes[i] === className ) {
return true ;
}
}
return false ;
} ;
}
})() ;
alert( hasClass(document.documentElement, "no-js") ) ;
總結(jié)
以上是生活随笔為你收集整理的html判断是否有某个元素,JS基础篇--如何用JavaScript判断dom是否有存在某class的值?...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信朋友圈+html+字体,一键修改微信
- 下一篇: 最简单的NamedPiep程序[秋镇菜]