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) 这句是什么意思,起什么作用
classList属性功能很强大 可以给DOM元素的类名做增删改查操作 但是IE9和IE9以前的版本不支持classList属性 document.documentElemen是文档对象根节点(html)的引用。if ('classList' in document.documentElement) 这句话就是判断浏览器是否支持classList这个属性 如果支持直接进行增删改查操作,如果不支持用正则表达式对类名做一个处理让它兼容
没用过in,估计是判断document.documentElement是否包含'classList'节点
我的想法跟楼上一样。本质上很多语言的语法都差不多的。
'classList'是DOM里的每个节点上都有的一个属性,判断的是这个浏览器是否有支持这个属性
'classList' in document.documentElement 就是判断现在浏览器支不支持classList这个属性。
主流浏览器里面 IE应该是10.0之后,谷歌是8.0,火狐是3.6
不过你这段代码里面应该就是为了是所有浏览器都兼容,才添加的判断,如果支持classList这个属性就用classList里面的方法,不支持的话就自己写方法来进行判断