2011-08-22 22 views
11

En el código en la línea marcada como // Error en los comentarios. Recibo un error de Javascript que dice: "No se puede leer el estilo de propiedad de 'nulo'". No tengo idea de qué no es capaz de encontrar el objeto. Pensé y probé todo. Por favor ayuda. Aquí está el código:document.getElementbyId() que devuelve nulo

<script type="text/javascript"> 

    $.getJSON('https://graph.facebook.com/647045111?fields=first_name&<%= Session["Token"] %>', 

    function (data) { 
     $('#userName').html(data.first_name); 
    }); 

    document.getElementById('connectedUnregistered').style.display = 'block'; //Error 

</script> 

    <div id="userName"></div> 

    <div id="disconnected" style="display:block;"> 

    <div id="heading">Facebook login</div> 

    <a href="Account/FacebookLogin" id="loginButton"><div id="fbConnectButton"><img src="/Content/Images/fbconnect.png"/></div></a>  

    </div> 

    <div id="connectedUnregistered" style="display:none"> 

    <div id="heading">Register Now</div> 



    </div> 

Respuesta

20

se está ejecutando su código JavaScript antes de la <div id="connectedUnregistered" /> se crea realmente.

También tenga en cuenta que no cerró su <div> con un </div> correspondiente.

Mueva su código javascript a una parte debajo de su HTML. O ejecútelo después de que la página termine de cargarse. Si está utilizando jQuery que puede hacer:

<script> 

    $(document).ready(function() { 

     ... your code ... 

    }); 
</script> 
2

Ponga su secuencia de comandos al final del documento HTML en lugar de al principio, y vea si eso resuelve las cosas.

JavaScript no puede editar el elemento DOM porque aún no se ha creado.

0

La secuencia de comandos intenta obtener el elemento antes de que se cargue el elemento. Coloque la secuencia de comandos después del elemento o póngalo en un evento de carga o listo.

3

Tal vez intentar colocar este código en un bloque

$(document).ready(function(){ 

//Code 

}); 

0

El código se ejecuta antes de la elemento está creando. Como está utilizando jquery, simplemente envuélvalo en document.ready:

$(function(){ 
    // code goes here 
}); 

Esto se ejecutará después de que se haya creado el DOM.

0

El código javascript se está ejecutando antes de que el DOM esté completamente disponible y la llamada falle. Intenta lo siguiente en lugar

$(document).ready(function() { 
    document.getElementById('connectedUnregistered').style.display = 'block'; //Error 
} 
0

Este error también podría indicar que el elemento no tiene un ID.

<input type="text" name="myelem" /> 

Asegúrate de que tu elemento tenga una identificación.

<input type="text" name="myelem" id="myelem" /> 
0

en mi caso fue a causa de tener esta línea al principio de la jsp/html (cualquiera que sea) Archivo:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

retirarlo resolvió el problema para mí (no me acuerdo de lo estaba haciendo en mi página en el primer lugar)

1

Además, si en alguna parte del código está usando document.write es muy común obtener nulo.

+1

document.write fue mi problema, ¡gracias! – DavidJ

Cuestiones relacionadas