add class with JavaScript

前端 未结 7 2049
傲寒
傲寒 2020-12-29 02:38

I am writing some vanilla JavaScript to create a nice navigation menu. I am stuck on adding an active class.

I am getting elements by class name NOT by id. The belo

7条回答
  •  独厮守ぢ
    2020-12-29 02:58

    Here is a method adapted from Jquery 2.1.1 that take a dom element instead of a jquery object (so jquery is not needed). Includes type checks and regex expressions:

    function addClass(element, value) {
        // Regex terms
        var rclass = /[\t\r\n\f]/g,
            rnotwhite = (/\S+/g);
    
        var classes,
            cur,
            curClass,
            finalValue,
            proceed = typeof value === "string" && value;
    
        if (!proceed) return element;
    
        classes = (value || "").match(rnotwhite) || [];
    
        cur = element.nodeType === 1
            && (element.className
                    ? (" " + element.className + " ").replace(rclass, " ")
                    : " "
            );
    
        if (!cur) return element;
    
        var j = 0;
    
        while ((curClass = classes[j++])) {
    
            if (cur.indexOf(" " + curClass + " ") < 0) {
    
                cur += curClass + " ";
    
            }
    
        }
    
        // only assign if different to avoid unneeded rendering.
        finalValue = cur.trim();
    
        if (element.className !== finalValue) {
    
            element.className = finalValue;
    
        }
    
        return element;
    };
    

提交回复
热议问题