2010-12-09 10 views
5

Existe-t-il un moyen de vérifier si un objet existe? Je continue d'obtenir une erreur "objet requis". Je sais que l'objet n'existe pas et j'aimerais contourner une partie de mon code si c'est le cas. Je ne sais pas ce que je ne l'ai pas essayé ...Comment configurer un état "si l'objet existe"?

var codeName = document.getElementById('testCode'); 
    //I have tried 
    if(codeName != null) 
    if(codeName.length != 0) 
    if(typeOf codeName != 'undefined') 
    if(!codeName) 
    if(codeName.value != null) 

Est-il possible de voir si un objet existe?

+1

En supposant que c'est le code JavaScript , Je ne vois pas comment C# ou ASP.NET MVC sont pertinents ... c'est juste un script qui s'exécute dans une page, n'est-ce pas? –

+1

Pouvons-nous voir votre mark-up pour voir si vos éléments avec ces ID existent réellement? –

+0

'if (typeOf (codeName) == 'objet') {}'? – Konerak

Répondre

3

Après l'appel getElementById, codeName est soit un élément DOM ou nulle. Vous pouvez utiliser une alerte pour voir qui:

alert(codeName); 

Alors if (codename != null) devrait fonctionner.

L'erreur se produit-elle avant qu'elle n'atteigne cette distance? Je voudrais essayer d'ajouter des alertes pour voir les valeurs que le code s'exécute. Ou parcourez ce code dans un débogueur.

-2

Peut-être essayer de vérifier que votre objet hérite du type dont votre fonction a besoin? Comme ceci:

if(codeName is String)

-1

Je ne sais pas ce que document est, mais vous pouvez essayer quelque chose comme

if(document.getElementById('code'+[i]) == null) 
{ 
//...do Something 
} 

test si elle existe avant vous l'utiliser ...

-1

Je ne fais pas beaucoup de codage JS, mais il semble que votre [i] soit le problème. Pour autant que je sache, [] est utilisé pour accéder à un champ d'un tableau, et vous n'avez pas de tableau. Il suffit d'utiliser "code" + i

+0

Je pensais cela aussi, mais apparemment [i] est valide en Javscript. Apprendre quelque chose de nouveau chaque jour! – Krisc

-1

En ruby ​​nil est équivalent à false.

Donc, essayez de vérifier que:

if codeName

+1

Mais ce n'est pas Ruby. (De plus, je ne dirais pas que «nil» est équivalent à «false» dans Ruby.) –

+0

Ops, vous avez raison ... –

-1
<div id='code1'></div> 

var itemCount = 10; 
var len = 10; 
len = itemCount; 
for (var i=0;i<len; i++) { 
    var codeName = document.getElementById('code'+ i); 
    if(codeName == null) 
     alert("Nope " + i); 
    else 
     alert("Yep " + i); 
} 
-1

Est-ce qu'un travail try/catch pour vous? Example

function toDoStuff(elem) { 
    codeName = document.getElementById(elem); 
    if (!codeName) throw "Object isn't here yet!" 
} 


for (var i = 0; i < 5; i++) { 
    try { 
     toDoStuff('someElem'); 
    } catch (err) { 
     if (err == "Object isn't here yet!") { 
      alert("Object isn't ready yet leaving loop!"); 
      break; 
     } 
    } 
} 
+0

Cela ne fonctionnerait pas; getElementById ne lance pas d'exception lorsque l'élément est introuvable. –

+0

ahh, merde. Vous avez raison, je viens de réaliser que le [i] le fait. Merci pour le vote en baisse! – subhaze

2

Essayez:

var codeName = document.getElementById(code[i]) || null; 
if (codeName) {/* action when codeName != null */} 

si vous voulez être sûr codeName est un objet:

if (codeName && codeName instanceof Object) { 
    /* action when codeName != null and Object */ 
} 
0
var codeList = document.getElementById('codeList'); 
if(!codeList && !codeList.value && !codeList.value.length) return; 
var code = codeList.value.split(","), 
    itemCount = code.length; 
if(!itemCount) return; 
for (var i=0, i<itemCount; i++) { 
    var codeName = document.getElementById(code[i]); 
    if(!codename || !codename.length) continue; 
    //do something here... 
} 

Je suis un exemple de travail ici: http://jsbin.com/uduxe4/15