Aquí hay varias funciones simples de javascript que puede utilizar para manipular nombres de clases en javascript simple. Se necesita un poco de trabajo extra en estas funciones para que coincida con los nombres de toda la clase única y evitar espacios adicionales antes/después de classnames:
function removeClass(elem, cls) {
var str = " " + elem.className + " ";
elem.className = str.replace(" " + cls + " ", " ").replace(/^\s+|\s+$/g, "");
}
function addClass(elem, cls) {
elem.className += (" " + cls);
}
function hasClass(elem, cls) {
var str = " " + elem.className + " ";
var testCls = " " + cls + " ";
return(str.indexOf(testCls) != -1) ;
}
function toggleClass(elem, cls) {
if (hasClass(elem, cls)) {
removeClass(elem, cls);
} else {
addClass(elem, cls);
}
}
function toggleBetweenClasses(elem, cls1, cls2) {
if (hasClass(elem, cls1)) {
removeClass(elem, cls1);
addClass(elem, cls2);
} else if (hasClass(elem, cls2)) {
removeClass(elem, cls2);
addClass(elem, cls1);
}
}
Si quisiera cambiar entre las clases black
y normal
sin afectar a ninguna otra clase en la objeto especificado, se puede hacer esto: ejemplo
function black(id) {
var obj = document.getElementById(id);
if (obj) {
toggleBetweenClasses(obj, "black", "normal");
}
}
Trabajar aquí: http://jsfiddle.net/jfriend00/eR85c/
Si quiere añadir la clase "negro" a menos "normal" ya estaba presente, usted podría hacer esto:
function black(id) {
var obj = document.getElementById(id);
if (obj && !hasClass(obj, "normal")) {
addClass(obj, "black");
}
}
Tal https://developer.mozilla.org/en-US/docs/DOM/element.classList puede ayudar. Es como jQuery pero en javascript simple, pero solo funciona en navegadores muy modernos. – Oriol