2009-10-21 7 views
11

estoy teniendo un error document.body es nula en mi javascript porque uso:cómo solucionar un document.body es nulo error

$(window).width() 

como valor a asignar a una variable en mi

$(document).ready(function(){}); 

Estaría muy agradecido con cualquiera que pudiera ayudarme con esto.

Saludos cordiales

Edit: Lo siento si todo esto no estaba clara. Tengo una demo en: http://www.wpmonk.com/demo/hypowired al principio el tema se cargará pero luego se volverá blanco (debido al error) pero cuando recargues puedes ver todo el tema porque entonces conoce el valor de $ (ventana) .width()

estoy usando este código para centrar el diseño (no es posible con CSS porque la izquierda tiene que tener un ancho de aswell.)

function positioneerElement(){  
    $breedte = (document.body.clientWidth - 1124)/2; 
    $('#bg_left').css({ 
     'width': $breedte 
    }); 
    $('.container').css({ 
     'margin-left': $breedte 
    }); 
} 

función positioneerElement() en la función de carga que llamo.

Lo siento si esto no estaba claro, aunque no era necesario poner la demostración aquí para esto ni el código. Sin embargo, me gustaría agradecer a las personas que están tratando de ayudar!

+0

Por favor enviar un caso de prueba mínima: Código suficiente para ser completa y producir el error, pero no más – outis

+0

¿Por qué la gente no aprende a votar abajo preguntas como estas? Desplácese sobre la flecha hacia abajo, lea la información sobre herramientas y haga su maldito trabajo. –

+3

@Josh: Probablemente un poco duro, creo. Pensé que podríamos pedir más información primero? Es probable que Ayrton pensara honestamente que no se requería más información; con suerte él actualizará la pregunta. Pero al bajar el voto, es menos probable que la gente intente ayudar y menos probable que obtenga una respuesta. Pensé que la comunidad SO estaba aquí para ayudar a la gente, no para reprenderlos y castigarlos por incomunicación ... – Damovisa

Respuesta

9

Estoy de acuerdo con outis, necesitamos más código.

Dicho esto:

  • ¿Seguro que estás haciendo todo su trabajo dentro de la $ (document) La función ready?
  • ¿Definitivamente tiene una etiqueta corporal correctamente formada (y cerrada) y un xhtml válido?
  • ¿Esto sucede en todos los navegadores?

Una sugerencia:

¿El problema persiste si se pone la función positioneerElement en el $ (document) La función ready así? Me pregunto si el navegador evalúa document.body antes de la carga del documento.

$(document).ready(function() { 
    function positioneerElement(){  
    $breedte = (document.body.clientWidth - 1124)/2; 
    $('#bg_left').css({ 
     'width': $breedte 
    }); 
    $('.container').css({ 
     'margin-left': $breedte 
    }); 

    // your other code, including 
    positioneerElement(); 
}); 
+0

He añadido algo más de información, Estoy haciendo esto todo en las funciones de listo sí, mi código debe ser válido xhtml y esto sucede en cada navegador – Ayrton

+0

@Ayrton - He añadido una sugerencia y un código de muestra – Damovisa

+0

muchas gracias. Aparentemente, todo tenía que ver con esto. Lo encontré extraño porque en otros proyectos no necesitaba poner las funciones en mi documento. Listo. Cheers – Ayrton

7

Asegúrese de que sólo llama $(window).width() después de haber incluido la etiqueta <body> (por ejemplo. En la devolución de llamada listo), y/o usar una declaración DOCTYPE modo estándar. Deberías hacer eso de todos modos: el modo Quirks es una mierda.

El problema es que para leer el tamaño de la ventana gráfica en el modo Quirks jQuery debe mirar document.body.clientWidth en lugar de document.documentElement.clientWidth. Si aún no ha iniciado su <body>, no hay un nodo document.body presente.

+0

Esa es la Curación real ... – ErickBest

1

tiene que incluir jquery.js, y no jquery.min.js Parece que algunos errores en ella Esto funciona para mí

+0

Me funcionó una vez. – Moons

Cuestiones relacionadas