Javascript 如果($(This.val()==“Spine”,则此代码可以正常工作,但如果($(This.val()==“Spine”Brian),则此代码不能正常工作

Javascript 如果($(This.val()==“Spine”,则此代码可以正常工作,但如果($(This.val()==“Spine”Brian),则此代码不能正常工作,javascript,jquery,html,Javascript,Jquery,Html,如果($(This.val()=“Spine”)此代码运行正常,但如果($(This.val()=“Spine”| |“Brian”)则选择菜单关闭,然后在选择“optionbodyRegion”==“时再次打开,我做错了什么 $("#optionbodyRegion").change(function(){ if ($(this).val() == "Spine"||"Brain") { document.getEle

如果
($(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

                    }
                }
            });

使用逻辑or运算符时语法错误

改变

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

正如法布里西奥·马特建议的那样,您可以将值用于javascript对象,而不是jquery对象的val()。这将给您带来性能优势

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

您必须在“或”的每一侧说明完整的条件/测试

if($(this).val() == "Spine" || $(this).val() == "Brain")
请尝试以下代码:

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

您需要的是:

if ($(this).val() == "Spine"|| $(this).val() == "Brain")
实际上,您的代码在运算符优先级方面有一个错误。我建议你看看


您的版本将始终返回true,因为在布尔上下文中使用时,任何非零长度字符串都将解析为true。关于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;
}

尽管用英语说,
如果x等于a或b
感觉很自然,但在大多数编程语言中,您需要明确地说,
如果x等于a或x等于b
请随意接受这些答案,因为这将提高您的声誉以及花时间回答您问题的用户。或者
如果(this.value==“Spine”| | this.value==“Brain”)
为了毫秒和简单起见。谢谢。我理解jQuery的好处,但人们为什么要用它来做最简单的内置操作,我不明白。。
$("#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;
}