2011-08-09 8 views
0

それはもう一度私です:) いくつかの有益なメンバーがスクリプトの作業を手伝ってくれましたが、私はIFステートメントを持っている場合もあります。IF文をスイッチケース関数に入れることはできますか?

$(document).ready(function() { 
    $("input[type='button']").click(function() { 
     switch(this.id) { 
     case:'buttonone': 
       if($('#one').attr('readonly')) { 

       $("#changeone").attr('value', 'Save'); 
       $('#one').attr('readonly', false); 
       $('#one').addClass('focusField'); 
       $("#questiononetext").html("When do you want to go out?"); 

} else { 

       $("#changeone").attr('value', 'Change'); 
       $('#one').attr('readonly', true); 
       $('#one').removeClass('focusField'); 
       $("#questiononetext").html("Date: "); 

} break; 
     case 'buttontwo': $("#questiononetext").html("Content changed"); break; 
     case 'buttonthree': $("#content").html("Content changed again"); break; 
     } 
    }); 
}); 

ケースの後ろにあるもの:buttonone、if文を試したところ、スクリプト全体が壊れていました。誰がなぜこのようなことが起こるかについてのアイデアはありますか?ありがとうございました:)))

+0

ちょうど傍注として、 'data-key = value'のような属性を使うことができます。コードを減らして不要なスイッチを使うのに役立つと思います。 – yoda

+0

こんにちはyoda、私は初心者ですので、あなたは何を意味するのかわかりません:)しかし、私は見つけるためにGoogleの検索を行います。ありがとう! – pufAmuf

+0

あなたがそのコードを使って何をしようとしているのかを明らかにすれば、誰かが解決策を提示するのに役立つかもしれません(マークアップもいくつか貼り付けます)。 – yoda

答えて

1

"case:buttonone"の "case"の後ろに余分なコロンはありませんか。確認してください

+0

それは結腸だった。私は気付かなかった、ありがとう、影! :)...編集:私は5分であなたの質問を受け入れることができるので、私は昼食から戻ってきます。あなたと私のコードを見て他のみんなにおかげで、私は本当にそれを感謝します:) – pufAmuf

4

switch文は重複しています。複数のボタンに対して同じclickハンドラを使用していますが、共通点はありません。

代わりに、3件のclickハンドラが必要です。

$('#buttonone').click(function(){ 
    ... 
}); 

$('#buttontwo').click(function(){ 
    ... 
}); 

$('#buttonthree').click(function(){ 
    ... 
}); 

をそしてbuttononeのハンドラ内if文は完全に正当なものです。

+0

こんにちはジェイミー、あなたの答えをありがとう、しかし、私はこの機能からよりコンパクトなコードを持って移動しました。もしこれが良い解決策だと思うのであれば教えてください。私はこれを代わりに使っていきます:) – pufAmuf

+0

@Jamiecが示唆していることは、読みやすく、エラーを起こしにくいと思います。これらの上にコンパクトさを評価するなら、確かに2行しか保存していないので、スペースが足りなくなるわけではありません... – JJJ

+0

Jamieによると、これは各要素が持つはるかに良い解決策です独自の専用ハンドラであり、後でこの「グローバル」ハンドラを使用しない余分なボタンを追加すると、衝突の危険はありません。 –

1

私はCASE内に問題はないと思います。問題は$('#one').attr('readonly')です。ここでdataプロパティを使用できます。私は$('#one').attr('readonly')が動作していないことをテストします。

+0

ありがとうアブドラが、問題は、 'ケース'の後にコロンであった:) – pufAmuf

関連する問題