Nonam_Ciel
Nonam_Ciel
2017-09-01 08:01
采纳率: 66.7%
浏览 686

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
    青珣墨笠 2017-09-01 08:41
    已采纳

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

    点赞 评论
  • b100522
    椎名小由奈 2017-09-01 08:16

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

    点赞 评论
  • miki1209
    miki_csdn 2017-09-01 08:18

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

    点赞 评论
  • cxy_Summer
    cxy_Summer 2017-09-01 08:31

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

    点赞 评论
  • baidu_29609961
    加班狂魔 2017-09-01 08:56

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

    点赞 评论

相关推荐