2016-07-07 37 views
-1

这是一个简单的HTML/JavaScript文件:测试CSS颜色用JavaScript

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"> 
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

<title>Javascript</title> 
<script type="text/javascript" src="jquery.min.js"></script> 
<style> 
.red { 
    color:rgb(255,0,0); 
} 
</style> 
</head> 
<body> 
    <p class="red">The quick brown fox jumped over the lazy developer.</p> 

    <script type="text/javascript"> 
    $("p").each (function (index,element) { 
     var color = $(element).css("color"); 
     alert("color=" + color); //the alert says color=rgb(255,0,0) 
     if (color==rgb(255,0,0)) { 
      alert("color is rgb(255,0,0)"); 
      //this alert never fires and the code never gets here. 
      $(element).css("color","#000000"); 
      $(element).css("background-color","#ffff00"); 
     } 
    }); 
</script> 
</body> 
</html> 

为什么测试if (color==rgb(255,0,0)失败?是不是颜色rgb(255,0,0)?如果测试表示color="red",似乎也无关紧要。

+0

该代码可以让你回来为元素的“色”的CSS属性设置的实际值。所以如果你通过一个类设置颜色,你将无法得到你期望的颜色值 – daf

+1

尝试添加引号:'color ==“rgb(255,0,0)”' – j08691

回答

1

.css("color")的调用返回一个字符串,因此您必须将其与字符串进行比较。此外,由于您正在进行字符串比较,因此空格很重要:rgb(255,0,0) !== rgb(255, 0, 0)

这只是正常:

$('document').ready(function() { 
 

 
    $("p").each(function(index, element) { 
 
    var color = $(element).css("color"); 
 
    alert('color=' + color); 
 
    if (color == 'rgb(255, 0, 0)') { 
 
     alert("color is rgb(255,0,0)"); 
 

 
     $(element).css("color", "#000000"); 
 
     $(element).css("background-color", "#ffff00"); 
 
    } 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<style> 
 
    .red { 
 
    color: rgb(255, 0, 0); 
 
    } 
 
</style> 
 

 
<p class="red">The quick brown fox jumped over the lazy developer.</p>

+0

你的解决方案奏效了。它甚至在.red的定义中是有效的:它是颜色:#FF0000; – Ron