jQuery';或';语句(';|';)在if条件下不起作用

jQuery';或';语句(';|';)在if条件下不起作用,jquery,html,Jquery,Html,我有一个下拉列表,有几个选项。我需要将这些选项着色如下 如果选项值==“f1”或选项值==“f2”,则下拉菜单color=“blue” else下拉菜单color=“红色” 代码如下: <select id="selector"> <option value>Default</option> <option value="f1">Fruit 1</option> <option value="f2">

我有一个下拉列表,有几个选项。我需要将这些选项着色如下

如果选项值==“f1”选项值==“f2”,则下拉菜单color=“blue”

else下拉菜单color=“红色”

代码如下:

<select id="selector">
    <option value>Default</option>
    <option value="f1">Fruit 1</option>
    <option value="f2">Fruit 2</option>
    <option value="v1">Vege 1</option>
    <option value="v2">Vege 2</option>
</select>

<script>
    $('#selector').on('change', function()
    {
        var selected_v = this.value;

        $(this).find("option").css("color", "blue");
        $(this).css("color", "blue");

        if ((selected_v != "f1") || (selected_v != "f2")) {
            $(this).css("color", "red");
        }
    });
</script>

违约
水果1
水果2
蔬菜1
蔬菜2
$('#选择器')。在('change',function()上
{
所选var_v=此值;
$(this.find(“option”).css(“color”、“blue”);
$(this.css(“颜色”、“蓝色”);
如果((选定的_v!=“f1”)| |(选定的_v!=“f2”)){
$(this.css(“颜色”、“红色”);
}
});
这适用于
if((选中的_v!=“f1”)
,但第二个条件后跟
|
时,它不起作用。使用运算符和第二个条件时,所有选项都将为红色。这里怎么了

实时代码:


问题出在
if
语句中。您正在比较不等于某个值的变量,或者再次比较不等于其他值的变量。由于OR,它将始终在
if
块内执行代码。所需的是
所选\u v
不等于
“f1”
所选\u v
不等于
“f2”

尝试使用
&
运算符:

if ( (selected_v != "f1") && (selected_v != "f2") ) {
    $(this).css("color", "red");
 }
或者您可以按照您所说的方式对其进行编码:

if ( (selected_v == "f1") || (selected_v == "f2") ) {
   $(this).css("color", "blue");
}
else
{
    $(this).css("color", "red");
}

问题出在
if
语句中。您正在比较不等于某个值的变量,或者再次比较不等于其他值的变量。由于OR,它将始终在
if
块内执行代码。所需的是
所选\u v
不等于
“f1”
所选\u v
不等于
“f2”

尝试使用
&
运算符:

if ( (selected_v != "f1") && (selected_v != "f2") ) {
    $(this).css("color", "red");
 }
或者您可以按照您所说的方式对其进行编码:

if ( (selected_v == "f1") || (selected_v == "f2") ) {
   $(this).css("color", "blue");
}
else
{
    $(this).css("color", "red");
}

那永远都是真的。想想看。如果它的值是
f2
,那么它就不是
f1
,如果它的值是
v1
,那么它就不是
f1
,也不是
f2


正如我所强调的,您需要使用
操作符(
&&
),而不是
|

,这总是等同于true。想想看。如果它的值是
f2
,那么它就不是
f1
,如果它的值是
v1
,那么它就不是
f1
,也不是
f2


正如我所强调的,您需要使用
运算符(
&&
)而不是
|

为什么不按您当时描述的方式进行操作?使用
&
和运算符,因为您希望
所选的\u v
不等于“f1”也不等于“f2”。当
所选的\u v
等于“f1”它不等于“f2”。所以请阅读你的逻辑。如果“selected_v不等于f1或selected_v不等于f2”,那么您的代码基本上是说变量必须是两个值才能为真,问题是,变量只能是一件事。这看起来像是逻辑问题,而不是编程问题。除此之外。。。设置
的颜色将不会被看到,因为您正在设置每个
的颜色。为什么不按照您当时描述的方式进行设置?使用
&&
和运算符,因为您希望
所选的\u v
不等于“f1”也不等于“f2”。当
所选的\u v
等于“f1”时,它不等于“f2”。所以请阅读你的逻辑。如果“selected_v不等于f1或selected_v不等于f2”,那么您的代码基本上是说变量必须是两个值才能为真,问题是,变量只能是一件事。这看起来像是逻辑问题,而不是编程问题。除此之外。。。将不会看到
的设置颜色,因为您正在设置每个
可能的颜色-已修改为使用and运算符@treyBake可能-已修改为使用and运算符@treyBake