2012-03-24 5 views
-1

は私のコードです:フィールドが宣言されているかどうかを確認する方法?ここ

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title> 
     JS Test 
    </title> 
     <script type="text/javascript" src="jquery-1.4.2.min.js"></script> 
     <script type="text/javascript"> 
     if(someObj != null || typeof someObj != 'undefined') 
     { 
      alert("Success."); 
     } 
     else 
     { 
      alert("Failed."); 
     } 
    </script> 
</head> 
<body> 

それは常にエラーを返すのはなぜ私に "someObjが定義されていませんか" message-? someObjが宣言されているかどうかを確認するためにコードをページの足に配置したいと思います。

+0

を使用している場合は?結局のところ、定義されていません... – Pointy

+0

また、なぜ非推奨のDoctypeを使用していますか?そのHTMLはHTML5ですが、XHTMLでは無効です – tkone

答えて

2

それを他の方法で回避操作を行います。

if(typeof someObj != 'undefined' && someObj != null) 
    { 
     alert("Success."); 
    } 
    else 
    { 
     alert("Failed."); 
    } 

あり、実際にあなたがtypeofで確認されたように、それは定義されていることを確認された後になるまでsomeObjを使用しようとしません。

実際に変数があるため、「someObjが定義されていない」あなたはsomeObj != nullとあなたのif条件の起動時にエラーが出る、定義されていない場合 - まあ、それが定義されてではありません。

最初にtypeofでテストすると、実際に定義されていない限りnullの比較は行われません。

+0

あなたが言ったように私はやっていますが、それでも私にはエラーが返されます。あなたはそのコードを試しましたか? –

+0

幸いにも、私は "typeof window.someObj!= null"への変更コードを試してみました。実行され、 "Faild"を返します。私に。あなたはそれを説明できますか? –

+0

'someObj'が定義されていなかったので、私の答えとまったく同じように私に働き、失敗しました。 'typeof'演算子は文字列を返すので、' null'と直接比較することは正しい方法ではありません。 – nnnnnn

0

適切にグローバル変数が存在するかどうかをテストする方法は、このようなものです:

if (typeof window.someObj != "undefined" && window.someObj != null) { 
    alert("success"); 
} 

しかし、あなたは、コードのこの部分の前にsomeObjを定義することができ、独自のカスタムのjavascriptのどれもが存在しないことを実現しますこのテストではその変数は決して見つかりません。

0

あなたは "someObjは" * * nullであってはならないということだと思いますなぜ、あなたのオブジェクトはjQueryオブジェクトが

var myObj=$('#myObj'); if (myObj.length) { alert("Success"); } else { alert("NOt found"); }

関連する問題