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

时间:2012-11-16 18:05:34

标签: javascript jquery html

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

                    }
                }
            });

6 个答案:

答案 0 :(得分:13)

使用逻辑或||运算符

时语法错误

更改

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

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

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

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

答案 1 :(得分:6)

您必须在'OR'的每一侧陈述完整的条件/测试。

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

答案 2 :(得分:3)

试试这段代码:

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

答案 3 :(得分:2)

您正在寻找的是:

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/

找到一些最常见的基本概要

答案 4 :(得分:1)

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

var parts = ["Spine", "Brain"];
var value = $(this).val();

if($.inArray(value, parts) > -1){
    //do something    
}

答案 5 :(得分:-1)

或使用开关案例

$("#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;
}