Foros del Web » Programando para Internet » Javascript »

Debuger :"Cannot set property 'className' of null"

Estas en el tema de Debuger :"Cannot set property 'className' of null" en el foro de Javascript en Foros del Web. Hola! Tengo un problema al ejectar una funcion bastante sencilla : Código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original document. getElementById ( 'MyDiv' ) . ...
  #1 (permalink)  
Antiguo 08/04/2012, 22:50
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Pregunta Debuger :"Cannot set property 'className' of null"

Hola!

Tengo un problema al ejectar una funcion bastante sencilla :

Código:


Código Javascript:
Ver original
  1. document.getElementById('MyDiv').className = "ClaseDiv";
El debugger de la consola de javascript me lanza el siguiente error :

"Cannot set property 'className' of null"


La ID y la Clase EXISTEN, ¿que falla?
  #2 (permalink)  
Antiguo 08/04/2012, 23:19
Avatar de rigobcastro  
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Debuger :"Cannot set property 'className' of null"

Muestra el código con todo y HTML, es para ver donde estás poniendo el javascript, si lo pones antes de los DIV obviamente no existiran para el JS ya que el DOM se lee de arriba a abajo...
  #3 (permalink)  
Antiguo 08/04/2012, 23:35
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Debuger :"Cannot set property 'className' of null"

Es un archivo externo .JS que mediante src lo meto en el head, es decir, como se tiene que hacer xD
  #4 (permalink)  
Antiguo 08/04/2012, 23:39
Avatar de rigobcastro  
Fecha de Ingreso: febrero-2012
Ubicación: Lejanías
Mensajes: 69
Antigüedad: 12 años, 2 meses
Puntos: 21
Respuesta: Debuger :"Cannot set property 'className' of null"

El problema es que te falta decir que ese código lo ejecutarás cuando la página cargue, lo primero que se carga es el script externo que dices, por el renderizado del DOM...

Usa OnLoad de javascript Nativo que en jQuery seria $.ready();

Código Javascript:
Ver original
  1. function init() {
  2. document.getElementById('MyDiv').className = "ClaseDiv";
  3. }
  4. window.onload = init;

Saludos y te recomiendo jQuery..
  #5 (permalink)  
Antiguo 09/04/2012, 00:29
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Debuger :"Cannot set property 'className' of null"

No, a ver. ...

No me interesa ejecutarlo al inciar la caga, Esa funcion es par aun evento determinado, en concreto para un onclic. Este evento es llamado dentro del Div ID al que llamo en la funcion.

Cuando lanzo ese evento, el debugger me da ese error.

Última edición por Albuss; 09/04/2012 a las 00:50
  #6 (permalink)  
Antiguo 09/04/2012, 06:45
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Debuger :"Cannot set property 'className' of null"

¡buenas!
tienes dos opciones, asignas el evento al elemento desde el onload o en lugar de cargar el script en HEAD lo cargas al final del documento, antes de </body>. te recuerdo lo que se te señalo en un tema anterior, no puedes obtener la referencia del elemento cuando el navegador aún no ha creado el elemento.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #7 (permalink)  
Antiguo 09/04/2012, 13:44
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 3 meses
Puntos: 30
Respuesta: Debuger :"Cannot set property 'className' of null"

Si, lo se, pero lo preocupante es que me sigan dando errores cuando utilizo scripts del head durante eventos que ocurren después de que se haya cargado la pagina.
  #8 (permalink)  
Antiguo 09/04/2012, 14:45
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Debuger :"Cannot set property 'className' of null"

intenta desde la consola obtener el elemento. si te devuelve null, quiere decir que haz escrito mal el identificador o no existe en ninguno de los elementos. pon todo el codigo en jsfiddle.net.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Etiquetas: classname, funcion, set
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:39.