0

我正在尝试更改<span>标签的文本颜色。

<script type="text/jscript">
window.setInterval(function(){
    if ($("#sw").css("color") == "red") {
    $("#sw").css("color","blue");
    }
    else if($("#sw").css("color") == "blue") {
    $("#sw").css("color","green");
    }
    else if($("#sw").css("color") == "green") {
    $("#sw").css("color","red");
    }
    }, 1000);


 </script> 

上面的例子应该改变<span>标签内的文本颜色。

我已经在 Internet Explorer 中对其进行了测试,它运行良好,但它在Google ChromeMozilla Firefox中不起作用。

问题是什么?这些浏览器不支持吗?有什么解决方法吗?这个问题的解决方案是什么?

4

2 回答 2

0

您得到的是 RGB 值而不是颜色名称

当我使用 var look = $('#sw').css('color'); 结果是 chrome 调试器中的“rgb(255, 0, 0)”

您的代码不起作用,因为返回的字符串是颜色的 rgb 值,而不是颜色本身,用 RGB 值替换名称可以修复您的代码。

 <script type="text/jscript">
                        window.setInterval(function () {
                    if ($('#sw').css('color') === 'rgb(255, 0, 0)') {
                        $("#sw").css("color", "rgb(0, 0, 255)");
                        }
                    else if ($("#sw").css("color") === "rgb(0, 0, 255)") {
                        $("#sw").css("color", "rgb(0, 128, 0)");
                        }
                    else if ($("#sw").css("color") === "rgb(0, 128, 0)") {
                         $("#sw").css("color", "rgb(255, 0, 0)");
                        }
                    }, 1000);
 </script> 

如第二个相关问题所述,这不适用于 IE。因为 IE 使用十六进制值。我建议使用另一个 else 语句来说明这一点。就像是

else if ($("#sw").css("color") === "#FF0000") {
                        $("#sw").css("color", "#00FF00");
                        }

或者在你的基本语句上使用 or 条件,比如

 if ($('#sw').css('color') === 'rgb(255, 0, 0)')||($("#sw").css("color") === "#FF0000") {
                    $("#sw").css("color", "rgb(0, 0, 255)");
                    }

我想它可以在 Firefox 中工作,因为 Firefox 将存储 css 颜色属性,但是您指定它,但是 chrome 会将 css 标准化为 RGB 值,尽管我可能是错的

此外,您可以通过使用 straigt javascript 来提高效率。类似于:如何使用 javascript 获取元素的背景颜色?

相关问题:

jquery if then 语句的 css 值

如何获得十六进制颜色值而不是 RGB 值?

于 2013-07-16T13:21:59.063 回答
0

检查这个小提琴链接

 setInterval(function(){
  if($("#sw").css("color") == "rgb(0, 0, 255)"){
   $("#sw").css("color","Red");
  }
  else if($("#sw").css("color") == "rgb(255, 0, 0)")
  {
    $("#sw").css("color","green");
  }
  else{
   $("#sw").css("color","Blue");
  }
 },1000);
于 2013-07-16T13:18:35.440 回答