无法理解classie.js API

时间:2015-01-19 14:02:44

标签: javascript classiejs

大家好,我正在通过另一个网站上的幻灯片和推送菜单的示例,我正在努力理解源代码下载中包含的classie.js文件中的if语句。

if ( 'classList' in document.documentElement ) {
  hasClass = function( elem, c ) {
    return elem.classList.contains( c );
  };
  addClass = function( elem, c ) {
    elem.classList.add( c );
  };
  removeClass = function( elem, c ) {
    elem.classList.remove( c );
  };
}
else {
  hasClass = function( elem, c ) {
    return classReg( c ).test( elem.className );
  };
  addClass = function( elem, c ) {
    if ( !hasClass( elem, c ) ) {
      elem.className = elem.className + ' ' + c;
    }
  };
  removeClass = function( elem, c ) {
    elem.className = elem.className.replace( classReg( c ), ' ' );
  };
}

我似乎无法绕过第一个IF声明。我的理解是document.documentElement会返回<html>标记,但'classList'商业是什么?我唯一能找到的就是mdn,但我完全不了解IF语句的测试内容。任何帮助,将不胜感激。感谢

2 个答案:

答案 0 :(得分:1)

较新的浏览器支持DOM元素节点上的.classList属性。它是一组类名。较旧的浏览器只支持.className属性,该属性是包含空格分隔的类名的单个字符串。

如果您发布的代码中的if语句发现文档节点具有.classList属性,则它知道它在较新的浏览器上运行。如果没有,那么它会创建一些类管理实用程序的替代版本。

答案 1 :(得分:1)

'classList' in document.documentElement只是检查classList元素中是否存在document.documentElement

来自MDN's documentation on the in operator

  

如果指定的属性在指定的对象中,则in运算符返回true。