Class Manipulation Functions (corrected)

Better versions of class manipulation functions

by Marcus Baptiste

HTML

<p class='test test1 test2   ' id='para'>Fuuuuu</p>

JavaScript

//check if an element has a certain class or multiple classes
	function classCheck(element, classesToCheck) {
		var newClasses = classesToCheck.replace(/\s+/g,'').split(",");
		var currentClasses = element.className.trim().replace(/\s+/g,' ') + ' ';
		var ind = newClasses.length;
		var hasClass = true;

        while(ind--) {
			var testTerm = new RegExp(newClasses[ind] +' ');
            if (testTerm.test(currentClasses)) {
                currentClasses = currentClasses.replace(testTerm,''); 
            } else {
                hasClass = false;
                break;
            }                      
 		}
        if (currentClasses !== '') {
            hasClass = false;
        }
 		return hasClass;
 	}

	//add a class or multiple classes to an element
 	function addClass(element, classesToAdd) {		
		var newClasses = classesToAdd.replace(/\s+/g,'').split(",");		
		var newClassName = element.className.trim().replace(/\s+/g,' ') + ' ';
        var len = newClasses.length;
        var ind = 0;
		while(ind < len) { 
			var testTerm = new RegExp(newClasses[ind] + ' ');
            if (!testTerm.test(newClassName)) {
				//current className doesn't contain class - add it
				newClassName += newClasses[ind] + ' ';			
 			}
            ind++;
 		}

		element.className = newClassName.trim();
 	}

	//remove a class or multiple classes from an element
 	function removeClass(element, classesToRemove) { 
		var classes = classesToRemove.replace(/\s+/g,'').split(",");
		var ind = classes.length;
		var newClass = element.className.trim().replace(/\s+/g,' ') + ' ';
		while(ind--) { 
        //remove class
			newClass = newClass.replace(classes[ind] + ' ','');
		}
		element.className = newClass.trim();
 	}

	//toggle class or multiple classes on and off 
	function toggleClass(element, classesToToggle) {
        var classes = classesToToggle.replace(/\s+/g,'').split(",")
		var newClassName = element.className.trim().replace(/\s+/g,' ') + ' ';
		var len = classes.length;
    ...