jQuery';或';语句(';|';)在if条件下不起作用
我有一个下拉列表,有几个选项。我需要将这些选项着色如下 如果选项值==“f1”或选项值==“f2”,则下拉菜单color=“blue” else下拉菜单color=“红色” 代码如下: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">
<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