Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript更改按钮的类?_Javascript_Css - Fatal编程技术网

如何使用javascript更改按钮的类?

如何使用javascript更改按钮的类?,javascript,css,Javascript,Css,我有以下代码: var image = button.getElementsByTagName("span")[0]; if (isEnabled) { image.style.color = "#BBB" else { image.style.color = "#AAA" 有没有人能给我一些建议,如何不直接设置颜色,而是将按钮设置为启用第三级,然后再将其设置为禁用第三级 请注意,“我的按钮”当前有如下类: class="fa fa-bold" class="fa fa-arr

我有以下代码:

var image = button.getElementsByTagName("span")[0];
if (isEnabled) {
    image.style.color = "#BBB"
else {
    image.style.color = "#AAA"
有没有人能给我一些建议,如何不直接设置颜色,而是将按钮设置为启用第三级,然后再将其设置为禁用第三级

请注意,“我的按钮”当前有如下类:

class="fa fa-bold"
class="fa fa-arrow"
class="fa fa-bold enabled"
class="fa fa-bold disabled"
class="fa fa-bold enabled"
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) ;
}

removeClass(image, "enabled");
addClass(image, "disabled");
等等

所以我需要前两个类保持不变。然后我需要能够设置为这样:

class="fa fa-bold"
class="fa fa-arrow"
class="fa fa-bold enabled"
class="fa fa-bold disabled"
class="fa fa-bold enabled"
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) ;
}

removeClass(image, "enabled");
addClass(image, "disabled");
等等。

使用

要将新类
myClass
添加到图像中,请使用
add()

将类添加到元素的类列表中。如果类已经存在于元素的类列表中,它将不会再次添加该类

要删除类,请使用
remove()

以安全的方式从元素的类列表中删除类。如果类不存在,则不会引发错误

切换
类,请使用
切换()

如果该名称存在于元素的类列表中,它将被删除。如果名称不存在,将添加该名称

要检查元素是否具有类,请使用
contains()

检查元素的类列表是否包含特定类

CSS

.myClass {
    color: #bbb;
}
使用

要将新类
myClass
添加到图像中,请使用
add()

将类添加到元素的类列表中。如果类已经存在于元素的类列表中,它将不会再次添加该类

要删除类,请使用
remove()

以安全的方式从元素的类列表中删除类。如果类不存在,则不会引发错误

切换
类,请使用
切换()

如果该名称存在于元素的类列表中,它将被删除。如果名称不存在,将添加该名称

要检查元素是否具有类,请使用
contains()

检查元素的类列表是否包含特定类

CSS

.myClass {
    color: #bbb;
}

如果您不使用内置类名功能的jQuery之类的库,并且希望从旧浏览器获得浏览器支持,那么您可以使用自己的小函数从DOM对象中添加或删除类名,而不会干扰其他类名,如下所示:

class="fa fa-bold"
class="fa fa-arrow"
class="fa fa-bold enabled"
class="fa fa-bold disabled"
class="fa fa-bold enabled"
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) ;
}

removeClass(image, "enabled");
addClass(image, "disabled");

如果您不使用内置类名功能的jQuery之类的库,并且希望从旧浏览器获得浏览器支持,那么您可以使用自己的小函数从DOM对象中添加或删除类名,而不会干扰其他类名,如下所示:

class="fa fa-bold"
class="fa fa-arrow"
class="fa fa-bold enabled"
class="fa fa-bold disabled"
class="fa fa-bold enabled"
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) ;
}

removeClass(image, "enabled");
addClass(image, "disabled");

注意:
.classList
需要IE10或更高版本。在我的情况下,我不确定按钮包含哪些类,所以我应该先删除已启用和已禁用的类,然后只添加一个?你能给我的特殊代码举个这样的例子吗?谢谢。ie10或更高版本可以满足我的需要:-)如果您不确定是否可以删除所有不支持的类并添加所需的类。@jfriend00
MDN
doc还为不支持这些属性的浏览器提供多填充注:
。classList
需要ie10或更高版本。在我的情况下,我不确定按钮包含哪些类我应该先删除已启用和已禁用,然后只添加一个吗?你能给我的特殊代码举个这样的例子吗?谢谢。ie10或更高版本可以满足我的需要:-)如果您不确定是否可以删除所有不支持的类并添加所需的类。@jfriend00
MDN
doc还为不支持这些属性的浏览器提供多填充。我会在
addFunction
中添加内部检查,无论该类是否存在。否则类似于
myClass myClass
的东西是可能的。@AMartinNo1-我更新了一个功能更强的版本,检查cls是否已经存在。我试图让答案尽可能简单(不要拖入太多其他代码),但我明白你的意思。我想在
addFunction
中添加一个内部检查,看看类是否存在。否则类似于
myClass myClass
的东西是可能的。@AMartinNo1-我更新了一个功能更强的版本,检查cls是否已经存在。我试图让答案尽可能简单(不要拖入太多其他代码),但我明白你的意思。