Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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 如何避免if条件中的错误?_Javascript_Jquery_Css_Colors - Fatal编程技术网

Javascript 如何避免if条件中的错误?

Javascript 如何避免if条件中的错误?,javascript,jquery,css,colors,Javascript,Jquery,Css,Colors,我知道条件检查中有错误,但我不知道如何避免它,因为没有解析颜色的方法。在CSS中,背景颜色通常以rgb(…)格式返回,但并不总是如此。如果涉及到透明度,它将是rgba(…)格式。一些浏览器(尤其是较旧的浏览器)将使用#RRGGBB格式 长话短说,您不能依赖backgroundColor的值进行任何类型的比较 改用.data()属性。试试这个:) var rgbString=“rgb(0,70255)”;//不管用什么方法都可以。 var parts=rgbString.match(/^rgb\(

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

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

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

改用
.data()
属性。

试试这个:)

var rgbString=“rgb(0,70255)”;//不管用什么方法都可以。
var parts=rgbString.match(/^rgb\(\d+)\s*(\d+)\s*(\d+)$/);
//零件现在应该是[“rgb(0,70,255”,“0”,“70”,“255”]
删除(第[0]部分);

对于(var i=1;i),您应该使用一个类设置动画并检查该类,而不是SteadjQuery没有解析颜色十六进制格式的功能。即使它有,您也不应该检查CSS属性,而应该重新定义使用类的逻辑,并使用例如
if($('#vbox')。hasClass('xxxx')进行检查
@user3648908我认为这个答案的精化远远超过了你问题的精化。@KingKing说得好!未精化引用错误:$未定义第1行未精化类型错误:未定义不是一个函数第8行链接/导入jquery在任何其他函数之前javascript@user3648908不要把这个代码放在第1行,把它放在jque后面ry脚本标记
function changeBGG1() {
     var a = $('#vbox').css("backgroundColor");
     if (a == "#800000") {
         $('#vbox').css("webkitAnimation", 'Red2Green 2s');
         $('#vbox').css("backgroundColor", '#004C00');
     }
 }
$.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();