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