Contenido

Creemos un isset() para javascript

5 Mar

+ 8

¿Cuantas veces has tenido problemas con variables que no existen en Javascript? ¿Cuantas veces has intentado acceder a un nodo que no existe? Por ese motivo implementar una función isset(), típica y muy útil en php, para nuestro Javascript puede ser un adelanto y nos puede facilitar las tareas futuras.

La función 

La función es realmente simple:


function isset(variable_name) {
    try {
         if (typeof(eval(variable_name)) != 'undefined')
         if (eval(variable_name) != null)
         return true;
     } catch(e) { }
    return false;
   }

Usando la función typeof de javascript podemos comprobar del tipo de variable que se trata de actuar enconsecuencia. Nos devolverá true en caso de si estár cargada o false si la variable no existe en la ejecución.

Ejemplos

var obj = document.getElementById('elemento'); 
if (isset(obj)) hacerAlgo(obj) ;
var obj = function() { alert("HEMOS HECHO ALGO");}
if (isset(obj)) obj();

Creo que no funciona.
getElementById de un nodo que no existe devuelve un objeto, es decir typeof(obj) será “object”, que es nulo y por tanto obj.length es un error ( firefox nos dice algo del tipo: obj has no properties ).

Por otra parte si llamo a la función con una variable que no está definida:
isset(variableNoDefinida); nos dará un error “variableNoDefinida is not defined” antes de llamar siquiera a la función.

Tuve ese problema hace tiempo…. ya ni recuerdo donde esta ese script… pero lo que si recuerdo es que lo busque de estas forma.

Y con mootools son casi anda de lineas de codigos realziar el isset con el $chk o $pick

Tambien con mootools se puede realizar con $chk o $pick :D

#4 Exacto, la librería ya incorpora una funcion similar a la de arriba.

bueno el problema puedes solucionarlo, colocando un tag de id cual sea, luego con una sentencia document.getElementById(’ID’) != null, puedes ejecutar un código JavaScript cuando el objeto esté creado.. bueno creo que ese era el problema que todos teníamos verdad? Saludos

Comentar

#

Me reservo el derecho de eliminar y/o modificar los comentarios que contengan lenguaje inapropiado, spam u otras conductas no apropiadas en una comunidad civilizada. Si tu comentario no aparece, puede ser que akismet lo haya capturado, cada día lo reviso y lo coloco en su lugar. Siento las molestias.