2012-01-11 20 views
0

このスイッチケースが機能しないのはなぜですか?私はすべての可能な構文を試しましたが、うまく動作しません。あるいは、この場合スイッチケースが間違っているのでしょうか?jQueryスイッチのケースが機能しない、構文の問題?

jQuery('#main input').blur(function() { 
    switch(jQuery(this).attr('name') { 
     case 'email': 
      jQuery(this).val('That's you e-Mail adress.'); 
      break; 
     case 'nickname': 
      jQuery(this).val('That's your nickname.'); 
      break; 
    } 
}); 

ご注意:私は非競合モードでのjQueryを使用しています、私はjQueryの代わり$を使用する理由です。

+0

')'。このような問題を見つけるには、JSLintやJSHintのようなツールを使います。 –

+0

インラインコードにバッククォート( ')を使用する必要があります。複数の行を投稿したい場合は、コードを強調表示し、中括弧ボタンをクリックしてください。読みやすいように書式設定します。 – Brandon

+0

ありがとうございました、それは将来的にそうするでしょう。 – Sven

答えて

1

を変更:

switch(jQuery(this).attr('name') { 

閉じ括弧がありません。次のようになります。

switch(jQuery(this).attr('name')) { 

あなたはこの文字列に引用符をエスケープする必要があります。このよう

jQuery(this).val('That's you e-Mail adress.'); 

を:あなたが不足している

jQuery(this).val('That\'s you e-Mail adress.'); 
1

あなたは、エラーの2種類があります:あなたはswitchパラメータの周りに閉じ括弧)が欠落している

  1. を。
  2. アポストロフィ(')を "that's"という単語でエスケープしていません。

修正されたコード:

jQuery('#main input').blur(function() { 
    switch(jQuery(this).attr('name')) { // Added a) 
     case 'email': 
      jQuery(this).val('That\'s you e-Mail adress.'); // Escaped the ' 
      break; 
     case 'nickname': 
      jQuery(this).val('That\'s your nickname.'); // Escaped the ' 
      break; 
    } 
}); 

を更新:

あなたは(そのような言葉上記That'sのように)JavaScriptで文字列をエスケープするに精通していない場合は、見てみましょうこのスタックオーバーフローに関する質問:Escaping Strings in JavaScript

1

多くの場合、同じ行にある'を使用すると構文が混乱するようです。あなたがここにいくつかのエラーを持って、次のように

jQuery('#main input').blur(function() { 
    switch(jQuery(this).attr('name')) { // <-- fix 1: added closing) 
     case 'email': 
      jQuery(this).val("That's you e-Mail adress."); // <-- fix 2: quotes 
     break; 
     case 'nickname': 
      jQuery(this).val("That's your nickname."); // <-- fix 3: quotes 
      break; 
    } 
}); 
関連する問題