我很确定我有这个权利,但尝试在我的javascript代码中使用两个单独的方法添加和删除。
第一个,是专门尝试将classStr
添加到el
的HTML元素对象className
。如果它已经包含classStr
,则它将保持不变。
var addClass = function addClass(el, classStr) {
if(el.className !== classStr) {
el.className = classStr;
}
};
这一个,我只想从classStr
删除className
而不留任何空格。 el
是一个元素对象。我唯一不确定的是,如果我要离开白色空间。
var removeClasfunction = function removeClass(el, classStr) {
delete el.className;
};
答案 0 :(得分:1)
您的函数的主要缺点是它们不处理对象上的多个类名。另外,你真的不想删除属性名称,只是在没有类名时将其设置为空字符串。
这是一组用于管理类名的实用程序函数,当一个对象上有多个类名时,这些函数是你应该计划的(你不应该这样做)。这些不会累积任何额外的空格:
function addClass(elem, cls) {
if (!hasClass(elem, cls)) {
var oldCls = elem.className;
if (oldCls) {
oldCls += " ";
}
elem.className = oldCls + cls;
}
}
function removeClass(elem, cls) {
var str = " " + elem.className + " ";
elem.className = str.replace(" " + cls + " ", " ").replace(/^\s+|\s+$/g, "");
}
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);
}
}