原生JS完成hasClass,addClass,removeClass

function addClass(obj, cls){
    var obj_class = obj.className,//猎取 class 内容.
    blank = (obj_class != '') ? ' ' : '';//推断猎取到的 class 是不是为空, 假如不为空在前面加个'空格'.
    added = obj_class + blank + cls;//组合本来的 class 和须要增加的 class.
    obj.className = added;//替代本来的 class.
}
 
function removeClass(obj, cls){
    var obj_class = ' '+obj.className+' ';//猎取 class 内容, 并在首尾各加一个空格. ex) 'abc        bcd' -> ' abc        bcd '
    obj_class = obj_class.replace(/(\s+)/gi, ' '),//将过剩的空字符替代成一个空格. ex) ' abc        bcd ' -> ' abc bcd '
    removed = obj_class.replace(' '+cls+' ', ' ');//在本来的 class 替代掉首尾加了空格的 class. ex) ' abc bcd ' -> 'bcd '
    removed = removed.replace(/(^\s+)|(\s+$)/g, '');//去掉首尾空格. ex) 'bcd ' -> 'bcd'
    obj.className = removed;//替代本来的 class.
}
 
function hasClass(obj, cls){
    var obj_class = obj.className,//猎取 class 内容.
    obj_class_lst = obj_class.split(/\s+/);//经由过程split空字符将cls转换成数组.
    x = 0;
    for(x in obj_class_lst) {
        if(obj_class_lst[x] == cls) {//轮回数组, 推断是不是包括cls
            return true;
        }
    }
    return false;
}
    原文作者:damonare
    原文地址: https://segmentfault.com/a/1190000004899802
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞