2012-03-24 20 views
-1

Hier ist mein Code:Wie überprüft man, ob ein Feld deklariert wurde oder nicht?

<!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> 

Warum es immer einen Fehler zurück nachrichten- mir "someObj nicht definiert ist"? Ich möchte die Codes am Fuß der Seite setzen, um zu überprüfen, ob das SomeObj deklariert wurde oder nicht.

+0

Warum denken Sie, dass "someObj" sollten * nicht * null sein? Es ist schließlich nicht definiert ... – Pointy

+0

Warum verwenden Sie auch einen veralteten Doctype? Das HTML ist valid HTML5, aber nicht XHTML – tkone

Antwort

2

Machen Sie es anders herum:

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

Das heißt, versuchen Sie nicht, um tatsächlich someObj bis zu verwenden, nachdem Sie sicher sind, es mit typeof als bestätigt definiert wurde.

Wenn in der Tat wird die Variable nicht definiert ist, wenn Sie Ihren if Zustand mit someObj != null starten erhalten Sie die Fehlermeldung „someObj nicht definiert ist“, weil - na ja, es ist nicht definiert.

Wenn Sie es zuerst mit typeof testen, wird es den null Vergleich nicht tun, es sei denn, es ist tatsächlich definiert.

+0

Ich habe getan, wie Sie sagten, aber es immer noch den Fehler zu mir zurück. Hast du diesen Code ausprobiert? –

+0

glücklicherweise habe ich versucht, den Code in "typeof window.someObj! = Null" zu ändern, es wird ausgeführt und "Faild" zurückgegeben. mir. Kannst du das erklären? –

+0

Das genau wie in meiner Antwort funktionierte für mich und ergab "Failed", weil 'someObj' nicht definiert wurde. Der 'typeof' -Operator gibt eine Zeichenkette zurück, daher ist der direkte Vergleich mit' null' nicht der richtige Weg, sie zu benutzen. – nnnnnn

0

Der Weg für die Existenz einer globalen Variablen, um richtig zu testen ist wie folgt:

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

Aber Sie erkennen, dass es keine Ihrer eigenen benutzerdefinierten Javascript ist die someObj vor diesem Stück Code definieren könnte Daher wird dieser Test diese Variable niemals finden.

0

Wenn Ihr Objekt ist ein jQuery-Objekt

verwenden

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

Verwandte Themen