2011-01-04 2 views
0
$.each(json.data,function(i,fb){ 

//some code here... 

if (msg.length > 150) { 
       msg = msg.substr(0,200)+"..."; 
      } 

//more code here... 
}); 

ここに問題があります。 msgが定義されていない場合はエラーが発生し、ブラウザには何も表示されません。変数が各ループの内部で設定されていない場合、何かを表示する方法はありますか?

考えられる解決策:msgが定義されていない場合のデフォルトメッセージを作成します。

試してみてください。

if (msg = 'undefined') { 
msg = 'some default message'; 
} else if (msg.length > 150) { 
msg = msg.substr(0,200)+"..."; 
} 

問題:私は、各項目、同じデフォルトのメッセージを取得するため、上記の試みは、ケースのみのための代わりにデフォルトのメッセージを有するので、うまくいきませんでした ましたmsgは "セット"されていません。

要求:そう、それはサイトの場合 MSGが定義されていない場合 が、私は、そのように、各項目に、適切なコードを書くためにあなたの助けを持つことができますが、それを表示し、デフォルトの1を示して?

適切な手助けをするための情報が不足している場合は、お知らせください。私は本当に悪い立場にいる。 :■

どうもありがとう、 MEM

+0

はあなたのWebサービスから受け取ったJSONデータですか?私が気づいたもう一つのことは、あなたのステートメントが== if(msg == 'undefined')でなければならないということです。 AJAX呼び出し全体をポストして、より多くのコンテキストを取得することができます。 – webdad3

答えて

3

ifステートメントに=ではなく==と書く必要があります。また、あなたがテストしようとしているならば、それは未定義だ場合、あなたはこのように、typeofを使用する必要があります。

if (typeof msg == 'undefined') 

typeofを使用して、それを比較したこのアイデアはundefinedと呼ばれるオブジェクトと比較することよりも、実際に安全です。その理由は、オブジェクトを再定義できますが、typeofの結果は決して変更されないためです。なぜ誰かがそれをするのに夢中になるのか分かりませんが、書くことは可能です:

3
if (msg = 'undefined') { 

- >

if (msg == undefined) { 

2つのこと私たちは、変数を割り当てるには、オブジェクトと=を比較する==を使用

  1. 。 JavaScriptでも。
  2. 'undefined'は、テキストが 'undefined'の文字列です。 undefined(引用符なし)は、JavaScriptのグローバルオブジェクトです。グローバルオブジェクトではないかもしれませんが、変数が存在するかどうかをチェックするために使用できます。
+0

ありがとうございました! :)(私は今、恥ずべきで走ります)。 :) – MEM

+0

はい、 'undefined'は' null'と全く同じです – JCOC611

+0

@ JCOC611:間違っています。定義されていないテスト=== nullとすると... – Jakob

1
if (msg == undefined) ... 

トリック=(実際に可変設定)に対する==(比較)を使用することです。

関連する問題