我如何避免错误在if条件

How do i avoid error in the if condition?

本文关键字:if 条件 错误 何避免      更新时间:2023-09-26
function changeBGG1() {
     var a = $('#vbox').css("backgroundColor");
     if (a == "#800000") {
         $('#vbox').css("webkitAnimation", 'Red2Green 2s');
         $('#vbox').css("backgroundColor", '#004C00');
     }
 }

我知道在条件检查中有一个错误,但是我不知道如何避免它,因为没有方法来解析颜色

在CSS中,背景颜色通常以rgb(...)格式返回,但并不总是。如果涉及到透明度,它将是rgba(...)格式。有些浏览器(特别是旧的)会使用#RRGGBB格式。

长话短说,您不能依赖backgroundColor的值进行任何比较。

使用.data()属性代替

试试这个:)

$.fn.getHexBackgroundColor = function() {
    var rgb = $(this).css('background-color');
    rgb = rgb.match(/^rgb'(('d+),'s*('d+),'s*('d+)')$/);
    function hex(x) {return ("0" + parseInt(x).toString(16)).slice(-2);}
    return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
}

function changeBGG1() {
     var a = $('#vbox').getHexBackgroundColor();
     if (a == "#800000") {
         $('#vbox').css("webkitAnimation", 'Red2Green 2s');
         $('#vbox').css("backgroundColor", '#004C00');
     }
 }
var rgbString = "rgb(0, 70, 255)"; // get this in whatever way.
var parts = rgbString.match(/^rgb'(('d+),'s*('d+),'s*('d+)')$/);
// parts now should be ["rgb(0, 70, 255", "0", "70", "255"]
delete (parts[0]);
for (var i = 1; i <= 3; ++i) {
    parts[i] = parseInt(parts[i]).toString(16);
    if (parts[i].length == 1) parts[i] = '0' + parts[i];
} 
var hexString ='#'+parts.join('').toUpperCase();

通过这种方法,rgb颜色可以转换为十六进制形式的字符串,并且可以像javascript中的字符串一样进行比较。