Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.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
Jquery 与背景颜色值匹配的字符串的计算结果不是真的_Jquery_Css - Fatal编程技术网

Jquery 与背景颜色值匹配的字符串的计算结果不是真的

Jquery 与背景颜色值匹配的字符串的计算结果不是真的,jquery,css,Jquery,Css,我最近看到过一篇类似的帖子,但是答案不起作用。 我正在尝试制作一个Connect four游戏,基本上我的问题是,每次我单击一个方框时,它都会改变颜色,但是如果我单击一个彩色方框,它也会将其更改为下一种颜色。如果盒子是红色或黄色,我希望每个盒子都保持这种颜色 if ($(this).css('background-color') == $(this).css('background-color', 'silver')) 或 它只是跳过了这个if语句?您使用的是#FF0000还是普通的红色?如

我最近看到过一篇类似的帖子,但是答案不起作用。 我正在尝试制作一个Connect four游戏,基本上我的问题是,每次我单击一个方框时,它都会改变颜色,但是如果我单击一个彩色方框,它也会将其更改为下一种颜色。如果盒子是红色或黄色,我希望每个盒子都保持这种颜色

 if ($(this).css('background-color') == $(this).css('background-color', 'silver'))

它只是跳过了这个if语句?

您使用的是#FF0000还是普通的红色?如果您的红色为#FF0001,则它不会将其识别为红色


您需要使您的声明完全相同的原始颜色,应该工作

对于您的第一个
if
语句,请更改:

if ($(this).css('background-color') == $(this).css('background-color', 'silver'))
致:

调用
$(this.css('background-color','silver'))
将该元素的
背景色设置为银色,并尝试将其
背景色
作为对象与自身进行比较

您的第二个
if
语句格式不正确,无法工作。将其更改为:

if ($(this).css('background-color') != 'red' || $(this).css('background-color') !='yellow')
但是,请注意,当您询问背景是否为红色时,这将始终是正确的。如果背景为红色,则背景不会为黄色,反之亦然。将
|
更改为
&&

该方法在不同浏览器中具有不同的输出:

$('<div>').css('background-color', 'red').css('background-color');

// Google Chrome
// "red"

// Mozilla Firefox
// "rgb(255, 0, 0)"
现在,您可以使用以下方法进行比较:

HTML
嗯,
“red”
只是说red的一种方式。它也可能是
“#FF0000”
。或
'rgb(255,0,0)
。或者
'rgba(255,0,0,1)
。我认为您应该将其更改为使用类,而不是使用颜色css值。更改复选框的状态时,请更改类。你的If也会检查类名。这对您来说会容易得多。在第一个
if
中,您正在比较
string
object
。第二个检查的语法完全关闭,应该是:
if($(this).css($(this.css('background-color')!='red')|($(this.css('background-color')!='yellow'))
if ($(this).css('background-color') != 'red' || $(this).css('background-color') !='yellow')
$('<div>').css('background-color', 'red').css('background-color');

// Google Chrome
// "red"

// Mozilla Firefox
// "rgb(255, 0, 0)"
$('<div>').css('background-color', 'rgba(0, 0, 0, 0)').css('background-color');

// Google Chrome
// "rgba(0, 0, 0, 0)"

// Mozilla Firefox
// "transparent"
var colors = {
    'red'  : ['red'  , '#FF0000', '#ff0000', 'rgb(255, 0, 0)', 'rgba(255, 0, 0, 1)'],
    'green': ['green', '#00ff00', '#00FF00', 'rgb(0, 255, 0)', 'rgba(0, 255, 0, 1)']

    // etc
};
<div id="test1" style="background-color: red;">I am RED</div>
<div id="test2" style="background-color: blue;">I am Blue</div>
// you want to see if `elem_color` is `red`
// just like this: elem_color == 'red'

var elem_color = $('#test1').css('background-color');

if ($.inArray(elem_color, colors['red']) > -1) {
    alert('Element is RED');
}

// you want to see if `elem_color` is not `green`
// just like this: elem_color != 'green'

var elem_color = $('#test2').css('background-color');

if (! ($.inArray(elem_color, colors['green']) > -1)) {
    alert('Element is not GREEN');
}