Javascript 比较DOM背景色

Javascript 比较DOM背景色,javascript,html,Javascript,Html,我试图在JavaScript中比较td的背景色,但不知道如何准确地调用颜色进行比较。颜色是在CSS中分配的(尽管可以更改为在php中分配,如果这改变了什么),并且td被分配了一个onclick=clickedOn(this),该函数调用以下函数: function clickedOn(elem) { if(elem.style.backgroundColor=='#F0F0F5') elem.style.backgroundColor="blue"; else

我试图在JavaScript中比较
td
的背景色,但不知道如何准确地调用颜色进行比较。颜色是在CSS中分配的(尽管可以更改为在php中分配,如果这改变了什么),并且
td
被分配了一个
onclick=clickedOn(this)
,该函数调用以下函数:

function clickedOn(elem)
{
    if(elem.style.backgroundColor=='#F0F0F5')
        elem.style.backgroundColor="blue";
    else
        alert("no");
}
function getStyle(el, styleProp) {
   if (el.currentStyle)
      var y = el.currentStyle[styleProp];
   else if (window.getComputedStyle)
      var y = document.defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
   return y;
}

如何比较
td
的现有背景色,如果?

如果颜色是通过CSS分配的,则“样式”属性不会直接显示它,您需要获得计算的样式。例如,使用此跨浏览器功能:

function clickedOn(elem)
{
    if(elem.style.backgroundColor=='#F0F0F5')
        elem.style.backgroundColor="blue";
    else
        alert("no");
}
function getStyle(el, styleProp) {
   if (el.currentStyle)
      var y = el.currentStyle[styleProp];
   else if (window.getComputedStyle)
      var y = document.defaultView.getComputedStyle(el, null).getPropertyValue(styleProp);
   return y;
}
你可以像这样跑步

 if(getStyle(elem, 'background-color') =='#F0F0F5')
更新这里的完整代码以测试函数。我必须再添加一个函数来将RGB颜色转换为十六进制(因为非IE浏览器返回RGB颜色):


.cell1{
背景色:#E0E5
}
.cell2{
背景色:#f0f5
}
功能点击开启(元素)
{
var bColor=getStyle(elem,'background-color');
if(bColor.toUpperCase()='#F0F0F5'| colorToHex(bColor.toUpperCase()=='#F0F0F5')
elem.style.backgroundColor=“蓝色”;
其他的
警告(“否”);
}
函数getStyle(el、styleProp){
if(el.currentStyle)
变量y=el.currentStyle[styleProp];
else if(window.getComputedStyle)
var y=document.defaultView.getComputedStyle(el,null).getPropertyValue(styleProp);
返回y;
}    
函数colorToHex(颜色){
if(color.substr(0,1)=='#'){
返回颜色;
}
变量数字=/(.*)rgb\(\d+)、(\d+)、(\d+)/.exec(颜色);
var red=parseInt(数字[2]);
var green=parseInt(数字[3]);
var blue=parseInt(数字[4]);

var rgb=蓝色|(绿色可能重复我使用JS和CSS来改变td背景,如果我完全跳过CSS,有没有替代上述函数的方法?@Cronnix该函数是通用的,无论您如何设置它,它都会获得样式。@YuriyGalanter正确,那么问题一定是我如何将
td
组件发送到您的函数中n、 我可以使用onclick中得到的
(this)
句柄吗,因此我调用您的函数
getStyle(this,backgroundColor)
?或者我需要先转换
这个结果,然后才能在你的函数中使用它吗?因为我没有让你的函数运行,所以我想我一定是发送了错误的属性。如果这有意义的话..是的,只需执行你现在所做的
onclick=clickedOn(this)
函数的内部clickedOn(elem)
只需发送
元素
@YuriyGalanter抱歉,Yuriy,但我对这一点比较陌生,正在尝试解决它。由于某种原因,当我发送
(elem,“backgroundColor”)
时,函数返回null。