Implementação de uma função para alternar nomes de classes
function toggleClass(classN, domElem){
hasClass(classN, domElem) ?
removeClass(classN, domElem) :
addClass(classN, domElem);
}
Usa um RegExp para ver se o elemento tem uma classe
function hasClass(classN, domElem){
var rxStr = "\b" + classN + "\b";
var tester = new RegExp(rxStr);
return tester.test(domElem.className);
}
Função que usa o método replace () do objeto String com RegExp para remover facilmente um nome de classe
function removeClass(classN, domElem){
var tester = new RegExp(("\s" + classN + "|" + classN + "\s?"), "g");
domElem.className = domElem.className.replace(tester, "");
}
Concatenação de string simples para adicionar um nome de classe
function addClass(className, domElem){
domElem.className = (domElem.className +" " + classN).trim();
}