Javascript 如何避免if条件中的错误?
我知道条件检查中有错误,但我不知道如何避免它,因为没有解析颜色的方法。在CSS中,背景颜色通常以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\(
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();