2012-03-24 4 views
-1

Voici mon code:Comment vérifier si un champ a été déclaré ou non?

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

Pourquoi renvoie toujours une erreur message- "unObj n'est pas défini" pour moi? Je veux mettre les codes en pied de page pour vérifier si le someObj a été déclaré ou non.

+0

Pourquoi pensez-vous que "unObj" devrait * pas * nul? Ce n'est pas défini, après tout ... – Pointy

+0

Aussi pourquoi utilisez-vous un doctype obsolète? Que HTML est HTML5 valide mais pas XHTML – tkone

Répondre

2

Faites-le contraire:

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

qui est, ne pas essayer d'utiliser effectivement someObj jusqu'à ce que vous êtes sûr qu'il a été défini comme confirmé par typeof.

Si, en fait, la variable n'est pas définie, lorsque vous démarrez votre état if avec someObj != null vous obtenez l'erreur « unObj n'est pas défini » parce que - bien, il ne défini.

Si vous le testez pour la première fois avec typeof, la comparaison null ne sera pas effectuée, sauf si elle est réellement définie.

+0

J'ai fait comme vous l'avez dit, mais il me renvoie toujours l'erreur. Avez-vous essayé ce code? –

+0

heureusement, j'ai essayé de changer le code en "typeof window.someObj! = Null", ça va courir et retourner "Faild". pour moi. Pouvez-vous expliquer cela? –

+0

Le exactement comme dans ma réponse a fonctionné pour moi, et retourné "Échec" parce que 'someObj' n'avait pas été défini. L'opérateur 'typeof' renvoie une chaîne, donc la comparaison directe avec' null' n'est pas la bonne façon de l'utiliser. – nnnnnn

0

La façon de tester correctement l'existence d'une variable globale est comme ceci:

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

Mais, vous vous rendez compte qu'il n'y a pas de votre propre javascript personnalisé qui pourrait définir someObj avant ce morceau de code donc ce test ne trouvera jamais cette variable.

0

Si votre objet est un objet Jquery utiliser

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

Questions connexes