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

論理 or||演算子を使用する際の構文が間違っています

変化する

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

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

Fabrício Matté が提案したように、jquery オブジェクトの val() の代わりに javascript オブジェクトで value を使用できます。これにより、パフォーマンスが向上します。

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

「OR」の両側に完全な条件 /test を記述する必要があります。

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 に答える