Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.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 为什么jQuery函数toggleClass()不起作用?_Javascript_Jquery - Fatal编程技术网

Javascript 为什么jQuery函数toggleClass()不起作用?

Javascript 为什么jQuery函数toggleClass()不起作用?,javascript,jquery,Javascript,Jquery,我想让按钮改变它的颜色,如果它是绿色的话就变成红色,如果它是红色的话就变成绿色。所以我使用toggleClass来实现它。 问:为什么它不起作用?几乎可以肯定它起作用了,但是在您发布的代码中没有针对类背景的CSS规则。该函数用于从元素的类列表中添加/删除条目,而不是直接操作样式对象特性 如果您确实从.toggleClass切换到.css,您会发现立即将属性从一个值切换到另一个值不会产生明显的效果。浏览器将有效地忽略第一次更新。几乎可以肯定它正在工作,但是在您发布的代码中没有针对类背景的CSS规则

我想让按钮改变它的颜色,如果它是绿色的话就变成红色,如果它是红色的话就变成绿色。所以我使用toggleClass来实现它。
问:为什么它不起作用?

几乎可以肯定它起作用了,但是在您发布的代码中没有针对类背景的CSS规则。该函数用于从元素的类列表中添加/删除条目,而不是直接操作样式对象特性


如果您确实从.toggleClass切换到.css,您会发现立即将属性从一个值切换到另一个值不会产生明显的效果。浏览器将有效地忽略第一次更新。

几乎可以肯定它正在工作,但是在您发布的代码中没有针对类背景的CSS规则。该函数用于从元素的类列表中添加/删除条目,而不是直接操作样式对象特性


如果您确实从.toggleClass切换到.css,您会发现立即将属性从一个值切换到另一个值不会产生明显的效果。浏览器将有效地忽略第一次更新。

您正在使用切换而不是类中的规则更改类名。但您可以通过添加内联样式来实现它,如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../jquery/jquery.js"></script>
    <style type="text/css" rel="stylesheet">
        #btn {
            background: green;
            color: #fff;
            padding: 15px;
            font-size: 24px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <script>
        $(() => {
        $("#btn").click(() => {
            if ($("#btn").hasClass("green")) {
                $("#btn").css("backgroundColor", "red");
            }
            else if ($("#btn").hasClass("red")) {
                $("#btn").css("backgroundColor", "green");
            }
        });
    });
    </script>

    <button id="btn">Button</button>
    
</body>
</html>
$ => { $btn.clickfunction{ const bgColor=this.style.backgroundColor; $this.cssbackgroundColor,bgColor==“绿色”?红色:绿色; }; }; btn{ 颜色:fff; 填充:15px; 字体大小:24px; 字体大小:粗体; }
按钮您正在使用toggle更改类名,而不是类中的规则。但您可以通过添加内联样式来实现它,如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../jquery/jquery.js"></script>
    <style type="text/css" rel="stylesheet">
        #btn {
            background: green;
            color: #fff;
            padding: 15px;
            font-size: 24px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <script>
        $(() => {
        $("#btn").click(() => {
            if ($("#btn").hasClass("green")) {
                $("#btn").css("backgroundColor", "red");
            }
            else if ($("#btn").hasClass("red")) {
                $("#btn").css("backgroundColor", "green");
            }
        });
    });
    </script>

    <button id="btn">Button</button>
    
</body>
</html>
$ => { $btn.clickfunction{ const bgColor=this.style.backgroundColor; $this.cssbackgroundColor,bgColor==“绿色”?红色:绿色; }; }; btn{ 颜色:fff; 填充:15px; 字体大小:24px; 字体大小:粗体; }
按钮使用该方法是完全正确的

但是参数是一个由空格分隔的类名组成的字符串

当然,您必须在样式表中定义这些类规则

文件 btn{ /*背景:绿色*/ 颜色:fff; 填充:15px; 字体大小:24px; 字体大小:粗体; } 瑞德先生{ 背景色:红色; } 格林先生{ 背景颜色:绿色; } $ => { $btn.click=>{ $btn.toggleClassred-green; }; }; 按钮
使用这种方法是完全正确的

但是参数是一个由空格分隔的类名组成的字符串

当然,您必须在样式表中定义这些类规则

文件 btn{ /*背景:绿色*/ 颜色:fff; 填充:15px; 字体大小:24px; 字体大小:粗体; } 瑞德先生{ 背景色:红色; } 格林先生{ 背景颜色:绿色; } $ => { $btn.click=>{ $btn.toggleClassred-green; }; }; 按钮
我想你在这里找的是.css而不是.toggleClass,考虑到你使用的参数,你的css特别是没有考虑任何类。我想你在这里找的是.css而不是.toggleClass,考虑到你使用的参数,我试图声明两个类:.green和.red,并为它们中的每一个设置背景属性,然后将它们与toggleClass一起使用。但它也不起作用。正如我所说的,进行背靠背的更改不会产生明显的效果。浏览器不会根据每次更改更新视图。您的意思是我不能做我想做的事情或做什么?或者我需要使用.css而不是.toggleClass?再说一次,也许我没有明白你想说的,对不起,也许你可以解释一下你想做什么。如果希望视图从一种颜色闪烁到另一种颜色,则需要使用计时器。我尝试声明了两个类:.green和.red,并将background属性设置为它们中的每一个,然后将它们与toggleClass一起使用。但它也不起作用。正如我所说的,进行背靠背的更改不会产生明显的效果。浏览器不会根据每次更改更新视图。您的意思是我不能做我想做的事情或做什么?或者我需要使用.css而不是.toggleClass?再说一次,也许我没有明白你想说的,对不起,也许你可以解释一下你想做什么。如果希望视图从一种颜色闪烁到另一种颜色,则需要使用计时器
更新相同的css属性后,后一个属性将生效。我这样做:我检查class.green是否由第一个if语句中的hasClass函数设置为btn,如果是:$btn.cssbackground,red;。然后在elseif语句中,我检查class.red是否由hasClass设置为btn,如果设置为:$btn.cssbackground,green;对这就是我使用if语句的原因if语句在哪里?我在前面的评论中已经描述了我是如何执行此操作的。如果您放置多个语句更新同一css属性,则后一个将生效。我这样做:我检查class.green是否由第一个if语句中的hasClass函数设置为btn,如果是这样:$btn.cssbackground,red;。然后在elseif语句中,我检查class.red是否由hasClass设置为btn,如果设置为:$btn.cssbackground,green;对这就是我使用if语句的原因if语句在哪里?我在前面的评论中已经向您描述了我是如何做到这一点的