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: 不客气
2 个月之前 回复
Nonam_Ciel
Nonam_Ciel 谢谢,理解了
2 个月之前 回复
zhangli2513
zhangli2513 同理"MozAppearance" in document.documentElement.style 判断浏览器是否支持moz-appearance的css3属性
3 个月之前 回复
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
上传中...
上传图片
插入图片