我如何避免错误在if条件
How do i avoid error in the if condition?
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中的字符串一样进行比较。
相关文章:
- 我已经创建了一个jquery转盘,并使用if条件来运行和停止转盘
- 带有 AJAX 响应或 AJAX 响应的 IF 条件.响应.Text 不起作用
- if条件中的递归混淆,JS如何解释“;真/假”;条件
- 如何在ejs模板中使用if条件
- for循环与if条件
- 中继器控件内的 IF 条件
- 比较IF条件下的两个javascript数值
- 如何在 javascript 中使用 document.getelementbyname 中的 if 条件
- 是否可以将鼠标悬停(evt)与if条件结合使用
- 当if条件被添加到循环中时,Javascript函数将停止工作
- 我的if条件的执行
- 为什么它没有进入 if 条件
- else-if条件在js渲染模板中
- 在模态中使用 e.target 的复杂 if 条件.js
- 达到IF条件后停止功能
- 如何使用流星模板上的if条件
- javascript setinterval使用if条件显示图像
- Check IF条件返回false,但IF中的语句仍然可以在JavaScript中工作
- if条件如何在javascript中计算其值
- for循环中嵌套if条件的setTimeout