2010-12-09 17 views
5

¿Hay alguna manera de verificar si existe un objeto? Sigo recibiendo un error de "objeto requerido". Sé que el objeto no existe y me gustaría omitir una parte de mi código si ese fuera el caso. No sé lo que no he probado ...¿Cómo configuro una condición "si el objeto 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) 

¿Hay alguna manera de ver si existe un objeto?

+1

Asumiendo que este es el código JavaScript , No veo cómo C# o ASP.NET MVC son relevantes ... es solo un script que se ejecuta en una página, ¿verdad? –

+1

¿Podemos ver su margen de beneficio para ver si realmente existen sus elementos con esos ID? –

+0

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

Respuesta

3

Después de la llamada getElementById, codeName es o bien un elemento DOM o nulo. Se puede utilizar una alerta para ver qué:

alert(codeName); 

Así if (codename != null) debería funcionar.

¿El error ocurre antes de que llegue tan lejos? Intentaría agregar alertas para ver los valores a medida que se ejecuta el código. O recorra este código en un depurador.

-2

¿Quizás intente comprobar que su objeto hereda del tipo que su función necesita? De esta manera:

if(codeName is String)

-1

no sé lo que es document, pero usted podría intentar algo así como

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

lo que las pruebas si es que existe antes que usarlo ...

-1

No hago una gran cantidad de codificación JS, pero parece que su [i] es el problema. Por lo que yo sé, [] se usa para acceder a un campo de una matriz, y usted no tiene una matriz. Solo use "código" + i

+0

Pensé esto también, pero aparentemente [i] es válido en Javscript. ¡Aprenda algo nuevo cada día! – Krisc

-1

En ruby ​​nil es equivalente a false.

Así que trate de comprobar simplemente:

if codeName

+1

Pero esto no es Ruby. (Además, no diría que 'nil' es equivalente a' false' en Ruby.) –

+0

Ops, tienes razón ... –

-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

¿Funcionaría un try/catch para usted? 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

Esto no funcionaría; getElementById no arroja una excepción cuando el elemento no se encuentra. –

+0

ahh, mierda. Estás en lo cierto, solo me di cuenta de que el [i] lo hace. Gracias por el voto abajo! – subhaze

2

Probar:

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

si usted quiere estar seguro de nombre en clave es un objeto:

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... 
} 

me un ejemplo de trabajo aquí: http://jsbin.com/uduxe4/15

Cuestiones relacionadas