如果($(this).val()==“Spine”)此代码工作正常但不是($(this).val()==“Spine”||“Brian”)

如果($(this).val() == "Spine")此代码工作正常但是如果($(this).val() == "Spine"||"Brian")则选择菜单关闭然后打开再次选择"optionbodyRegion" == ""我做错了什么?

 $("#optionbodyRegion").change(function(){ if ($(this).val() == "Spine"||"Brain") { document.getElementById('optioncontrast').options[0]=new Option("Select", "", false, false) document.getElementById('optioncontrast').options[1]=new Option("With", "With", false, false) document.getElementById('optioncontrast').options[2]=new Option("Without", "Without", false, false) document.getElementById('optioncontrast').options[3]=new Option("With and Without", "With and Without", false, false) $("#contrast").slideDown("fast"); //Slide Down Effect } else { if ($(this).val() == "" ) { $("#contrast").slideUp("fast"); //Slide Up Effect } } }); 

使用逻辑或||语法错误 操作者

更改

  if ($(this).val() == "Spine"||"Brain") { 

 if ($(this).val() == "Spine"|| $(this).val() == "Brain") { 

您可以使用javascript对象的值而不是jquery对象的val(),正如FabrícioMatté建议的那样。 它会给你带来性能上的好处。

 if (this.value == "Spine" || this.value == "Brain") 

您必须在’OR’的每一侧说明完整的条件/测试。

 if($(this).val() == "Spine" || $(this).val() == "Brain") 

试试这段代码:

  if (($(this).val() == "Spine")||($(this).val() =="Brain"))) 

你在寻找的是:

 if ($(this).val() == "Spine"|| $(this).val() == "Brain") 

因此,您的代码有关于运算符优先级的错误。 我建议查看https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Operator_Precedence

您的版本将始终返回true,因为在布尔上下文中使用时,任何非零长度字符串都将解析为true。 有关Javascript在布尔评估方面的古怪行为的文章很多。 可以在http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/找到一些最常见的基本概要。

我会用另一种方法。 特别是如果列表增长。 如果你得到一个包含几个部分的列表,则条件变得很难看。

 var parts = ["Spine", "Brain"]; var value = $(this).val(); if($.inArray(value, parts) > -1){ //do something } 

或使用开关盒

 $("#optionbodyRegion").change(function(){ switch ($(this).val()) { case "Spine": case "Brain": document.getElementById('optioncontrast').options[0]=new Option("Select", "", false, false) document.getElementById('optioncontrast').options[1]=new Option("With", "With", false, false) document.getElementById('optioncontrast').options[2]=new Option("Without", "Without", false, false) document.getElementById('optioncontrast').options[3]=new Option("With and Without", "With and Without", false, false) $("#contrast").slideDown("fast"); //Slide Down Effect break; case "": $("#contrast").slideUp("fast"); //Slide Up Effect break; default: break; }