2 nonam ciel Nonam_Ciel 于 2017.09.01 16:01 提问

js问题,有不懂意思的语句,求大神指点

var hasClass, addClass, removeClass;

if ('classList' in document.documentElement) {
hasClass = function (el, className) { return el.classList.contains(className); };
addClass = function (el, className) { el.classList.add(className); };
removeClass = function (el, className) { el.classList.remove(className); };
} else {
hasClass = function (el, className) {
return new RegExp('\b'+ className+'\b').test(el.className);
};
addClass = function (el, className) {
if (!hasClass(el, className)) { el.className += ' ' + className; }
};
removeClass = function (el, className) {
el.className = el.className.replace(new RegExp('\b'+ className+'\b', 'g'), '');
};
}
if ('classList' in document.documentElement) 这句是什么意思,起什么作用

5个回答

zhangli2513
zhangli2513   2017.09.01 16:41
已采纳

classList属性功能很强大 可以给DOM元素的类名做增删改查操作 但是IE9和IE9以前的版本不支持classList属性 document.documentElemen是文档对象根节点(html)的引用。if ('classList' in document.documentElement) 这句话就是判断浏览器是否支持classList这个属性 如果支持直接进行增删改查操作,如果不支持用正则表达式对类名做一个处理让它兼容

zhangli2513
zhangli2513 回复Nonam_Ciel: 不客气
11 个月之前 回复
Nonam_Ciel
Nonam_Ciel 谢谢,理解了
11 个月之前 回复
zhangli2513
zhangli2513 同理"MozAppearance" in document.documentElement.style 判断浏览器是否支持moz-appearance的css3属性
11 个月之前 回复
b100522
b100522   2017.09.01 16:16

没用过in,估计是判断document.documentElement是否包含'classList'节点

miki1209
miki1209   2017.09.01 16:18

我的想法跟楼上一样。本质上很多语言的语法都差不多的。

cxy_Summer
cxy_Summer   2017.09.01 16:31

'classList'是DOM里的每个节点上都有的一个属性,判断的是这个浏览器是否有支持这个属性

baidu_29609961
baidu_29609961   2017.09.01 16:56

'classList' in document.documentElement 就是判断现在浏览器支不支持classList这个属性。
主流浏览器里面 IE应该是10.0之后,谷歌是8.0,火狐是3.6
不过你这段代码里面应该就是为了是所有浏览器都兼容,才添加的判断,如果支持classList这个属性就用classList里面的方法,不支持的话就自己写方法来进行判断

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
java题库8
1. 一个没有实现Serializable接口的父类,编写一个能够序列化的子类 ,只要父类实现了序列化的接口,或者,子类实现了序列化的接口就可以序列化 “transient”——“瞬态”,先不说这个翻译是否恰当,这个变量关键字一直不曾使用,简单的说就是被瞬态定义的变量不可序列号。或者这么给他换个名字——“不可序列化状态”。 打个比方,如果一个用户有一些敏感信息(譬如密码,银行卡号等),为了安
(地主源代码)求解! 做的不够好,求大神指点
(地主源代码)求解! 做的不够好,求大神指点
如何做生意:你有没有这方面的头脑?
    我首先要说明的是做生意赚钱与做事业是两回事,我这里只说做小生意,就是普通人开个店、做个经销商、开个小贸易公司、白领辞职后开个小咨询公司等普通中国人的小生意;如果你有做大事业的志向,或者你觉得你有做千万、亿万富翁的鸿鹄之志及潜力,你大可按照李嘉诚等人标准去衡量去学习:志向远大、品德高尚、高瞻远瞩、意志坚定等,这里只谈甘心做点赚钱小生意、赚点小钱的人素质标准。     而作为一个普通中国人
基于SCOKET的CS聊天工具
做好了不能用 请各位指点,不知道哪里有错误。IP地址不会弄。我的QQ601940219 求大神帮助
求大神指点下
集合A,集合B  已经确定A>B  A,B中不可能出现重复   A与B有交集  怎么用代码实现B中值在A中的位置?并将B中不是交集的部分 筛选出来?  例如 A[1,2,3,4,5,6,7,8,9]     B[12,3,8,11,9,13,]    ...
求大神指点!
现在有一个list集合,里面的数据是这样:{消息, 消息, 消息, 消息, 消息, 消息, 消息, 消息, 消息, 消息, 消息, 消息, 评论, 评论, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯, 通讯...
ThreeLayerLib源代码
ThreeLayerLib.dll的源代码,请各位大神多多指点其中存在的问题,不胜感激,再次感谢各位大神对在下的关注和指点!
自制串口调试助手
自制串口调试助手,参照网上的代码资源,可以实现基本功能,求各路大神指点
人事资源管理系统
SSH框架+MySQL做的一个人事管理系统,需要的可以借鉴下,不足之处求大神指点
枚举类在switch...case语句中使用的问题
问题记录: 在开发过程当中,需要对一个Integer的值进行switch操作,case的值是枚举类型的retCode属性(该属性为Integer类型),编译器报错case expressions must be constant expressions。 //报错代码: Integer i = 0; switch (i) { case TransactType.TRANSACT