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