3

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

                    }
                }
            });
4

6 回答 6

13

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

改变

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

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

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

if (this.value == "Spine" || this.value == "Brain")
于 2012-11-16T18:06:27.540 回答
4

您必须在“或”的每一侧陈述完整的条件/测试。

if($(this).val() == "Spine" || $(this).val() == "Brain")
于 2012-11-16T18:07:07.577 回答
3

试试这个代码:

  if (($(this).val() == "Spine")||($(this).val() =="Brain")))
于 2012-11-16T18:07:47.873 回答
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/找到

于 2012-11-16T18:11:30.040 回答
1

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

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

if($.inArray(value, parts) > -1){
    //do something    
}
于 2012-11-16T18:13:46.557 回答
-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;
}
于 2012-11-16T18:16:58.437 回答