2009-10-21 14 views
11

Sto avendo un document.body è errore nullo nel mio javascript, perché io uso:come risolvere un document.body è nullo errori

$(window).width() 

come valore da assegnare a una variabile nel mio

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

Sarei molto grato a chiunque possa aiutarmi con questo.

Cordiali saluti

edit: scusa se tutto questo era chiaro. Ho una demo a: http://www.wpmonk.com/demo/hypowired inizialmente il tema verrà caricato ma poi diventa bianco (a causa dell'errore) ma quando si ricarica si può vedere l'intero tema perché poi conosce il valore di $ (finestra) .width()

sto usando questo codice per centrare il layout (non possibile con i CSS perché la sinistra ha bisogno di avere un aswell di larghezza.)

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

chiamo la funzione positioneerElement() nella funzione del carico.

Scusate se questo non era chiaro, anche se non era necessario mettere la demo qui per questo né il codice. Comunque vorrei ringraziare le persone che stanno cercando di aiutare!

+0

Si prega di inviare un banco di prova minimo: il codice abbastanza per essere completa e produrre il errore, ma non di più. – outis

+0

Perché non le persone imparano a far scendere le domande come queste ?! Passa il mouse sulla freccia rivolta verso il basso, leggi il suggerimento e fai il tuo dannato lavoro. –

+3

@Josh: Probabilmente un po 'duro penso. Ho pensato che potremmo chiedere più informazioni prima? Probabilmente Ayrton pensava onestamente che non fossero richieste maggiori informazioni; speriamo che aggiorni la domanda. Ma facendo downvoting, è meno probabile che le persone proveranno ad aiutare e meno probabilmente otterrà una risposta. Pensavo che la comunità SO fosse qui per aiutare le persone, non rimproverarle e punirle per errori di comunicazione ... – Damovisa

risposta

9

Sono d'accordo con outis - abbiamo bisogno di altro codice.

Detto questo:

  • Sei sicuro che si sta facendo tutto il il vostro lavoro all'interno del $ (document) Funzione .ready?
  • Avete sicuramente un tag body formato correttamente (e chiuso) e xhtml valido?
  • Si verifica su tutti i browser?

Un suggerimento:

Il problema persiste se si mette la funzione positioneerElement nel $ (document) funzione .ready come bene? Mi chiedo se il browser valuterà document.body prima del caricamento 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

Ho aggiunto qualche altra informazione, Io sto facendo tutto questo nelle funzioni pronte sì, il mio codice dovrebbe essere valido xhtml e questo succede in ogni browser – Ayrton

+0

@Ayrton - Ho aggiunto un suggerimento e un codice di esempio – Damovisa

+0

Grazie mille. Apparentemente tutto ciò ha a che fare con questo. L'ho trovato strano perché in altri progetti non avevo bisogno di inserire le funzioni nel mio documento. Già. Cheers – Ayrton

7

Assicurarsi di chiamare solo $(window).width()dopo hai inserito il tag <body> (ad es. Nella richiamata pronto), e/o utilizzare una dichiarazione DOCTYPE modalità Standard. Dovresti farlo comunque: la modalità Quirks fa schifo.

Il problema è, per leggere la dimensione del viewport in Quirks Mode, jQuery deve guardare document.body.clientWidth anziché document.documentElement.clientWidth. Se non hai ancora avviato il tuo <body>, non è presente il nodo document.body.

+0

Questa è la vera cura ... – ErickBest

1

è necessario includere jquery.js, e non jquery.min.js Sembra una bug in esso Questo funziona per me

+0

Ha funzionato anche per me una volta. – Moons

Problemi correlati