例如:

<html class="no-js">
<head>
</head>
<body>
</body>
</html>

判断html节点的class是否有no-js。

1.jquery的实现方式

$("html").hasClass('no-js');

jquery源码的实现方式:

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 属性返回以数字值返回指定节点的节点类型。常用的一般有三种:

  1. 如果节点是元素节点(Element),则 nodeType 属性将返回 1。
  2. 如果节点是属性节点(Attr),则 nodeType 属性将返回 2。
  3. 如果节点是文本节点(Text),则nodeType 属性将返回 3。

例如,获得 body 元素的节点类型:

document.body.nodeType;//1

如果想了解更多的节点类型,可查看:HTML DOM nodeType 属性

2.js的实现方式

function hasClass(element, cls) {return (' ' + element.className + ' ').indexOf(' ' + cls + ' ') > -1;
}hasClass(document.querySelector("html"), 'no-js');

想详细了解DOM选择器querySelector,可点击《JS基础篇--原生JS强大DOM选择器querySelector与querySelectorAll》。

3.H5的classList

说明下:

  1. 字符串的indexOf方法是无法区分.no-js.no-js-indeed这样的类;
  2. 类名的分隔符可能不是空格,还有可能是\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") ) ;

问题地址:https://segmentfault.com/q/1010000002501794

如何用JavaScript判断dom是否有存在某class的值?相关推荐

  1. html判断是否有某个元素,JS基础篇--如何用JavaScript判断dom是否有存在某class的值?...

    例如: 判断html节点的class是否有no-js. 1.jquery的实现方式 $("html").hasClass('no-js'); jquery源码的实现方式: var ...

  2. JavaScript 判断 DOM 何时加载完毕

    处理HTML DOM文档存在一个难题是,JavaScript可以在DOM完全加载之前执行,这会给你的代码引发不少的潜在问题.浏览器的渲染和操作顺序大致如下列表: HTML解析完毕 外部脚本和样式表加载 ...

  3. html验证用户名和密码,如何用javascript判断用户名和密码是否为空?

    用javascript判断用户名和密码是否为空的方法:JavaScript中可以使用(表单名.文本域名.value==''")来判断表单中用户名与密码是否为空. 用javascript判断用 ...

  4. 如何用JavaScript判断前端应用运行环境(移动平台还是桌面环境)

    我们部署在某些云平台或者Web服务器上的前端应用,既可以用PC端浏览器访问,也可以用手机上的浏览器访问. 在前端应用里,有时候我们需要根据运行环境的不同做出对应处理.比如下面这段逻辑,如果判断出应用当 ...

  5. 如何用JavaScript判断客户端浏览器是否安装了Flash插件,及其版本

    注:后来知道有个swfobject的东西专门做这件事情! <SCRIPT  LANGUAGE="JavaScript"> <!--  var  swf  =  n ...

  6. JavaScript判断浏览器类型及版本

    JavaScript判断浏览器类型及版本 你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器. 几天前,浏览器家族有 ...

  7. JavaScript学习笔记(2)——JavaScript和DOM的关系

    文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展标志语言的标准编程接口.DOM实际上是以面向对象方式描述的文档模型.DOM定义了表示和修改文档所需的 ...

  8. 如何用JavaScript手动实现一个栈

    什么是栈(Stack) 栈是一种遵从后进先出(LIFO)原则的有序集合. 新添加的或待删除的元素都保存在栈的末尾,称为栈顶,另一端叫栈底. 在栈里,新元素都靠近栈顶,旧元素都接近栈底 现实中的例子 在 ...

  9. Javascript操作DOM常用API总结

    文本整理了javascript操作DOM的一些常用的api,根据其作用整理成为创建,修改,查询等多种类型的api,主要用于复习基础知识,加深对原生js的认识. 基本概念 在讲解操作DOM的api之前, ...

最新文章

  1. python安装cvxpy
  2. R构建SVM回归模型
  3. 《数学之美》第12章 有限状态机—地图与本地搜索的核心技术
  4. 20172330 2017-2018-1 《Java程序设计》第七周学习总结
  5. 两个gcc_KDD 2020 | GCC:图上的Contrastive Coding
  6. Fragment向ChildFragment传值
  7. 有效创建Oracle dblink的两种方式
  8. C语言 assert 函数 - C语言零基础入门教程
  9. python脚本在linux上运行的两种方式_python脚本当作Linux中的服务启动实现方法
  10. java学习笔记_2020全网最全Java面试题,学习笔记!
  11. java导出excel超出65536条处理
  12. 为什么java导入有x_ImportError:无法导入名称X
  13. 转速双闭环matlab仿真,电流转速双闭环直流调速系统matlab仿真 实验.doc
  14. 电脑磁盘分区、合并的方法指南!
  15. java uniapp旅游微信小程序的开发hbuilderx
  16. 对List集合中每个对象元素按时间顺序排序
  17. 报错:‘Concatenate’layer requires inputs with matching shapes expect for the concat axis. 解决思路
  18. 键盘布局及各按键功能介绍(超超超详细的哟~)
  19. Excel数据透视和Python数据透视
  20. 温故知新(一)——基于 RTOS 的软件开发理论

热门文章

  1. mysql sock golang_golang thrift 总结一下网络上的一些坑
  2. 山东师范大学计算机尹副教授,我校举办首届优秀教案展评工作
  3. 判断有向图g中顶点i到顶点j是否有路径_号称图的最短路径算法--Floyd算法
  4. python区块链开发_Fabric区块链Python开发详解
  5. ubuntu+终端不能启动mysql数据库_强制重启Ubuntu服务器后Mysql无法启动
  6. 如何用python的i2c教程_使用Raspberry pi3(Python)的I2C用法
  7. 算法篇之-----滑动窗口(尺取法)
  8. lxml 和 XPah (爬虫)
  9. jquery打开页面
  10. 笔记-项目立项管理-项目论证的程序