2011-12-24 11 views
6

Ho notato qualche errore nella funzione window.onload. (Forse è il mio torto) Il problema è che quando ho usato una semplice funzione, ha funzionato su tutti i browser tranne Chrome.problema funzione window.onload

var name=$("#name"); 
window.onload = function(){ 
    name.fadeIn(500); 
}; 

Poi, proprio per l'interesse, provato anche questa:

var name; 
window.onload = function(){ 
    name=$("#name"); 
    name.fadeIn(500); 
}; 

In tutti i casi di cui sopra, strumenti di sviluppo di Chrome mi ha dato questo messaggio di errore:

Uncaught TypeError: Object [object Object] has no method 'fadeIn' 

ho risolto questo errore con il seguente codice.

window.onload = function(){ 
    var name=$("#name"); 
    name.fadeIn(500); 
}; 

Ma ora voglio qualche spiegazione, perché non ha funzionato prima 2 pezzo di codice?

+1

Non so il secondo esempio, ma quel primo blocco di codice potrebbe richiedere un elemento che non esiste ancora. –

+0

Ho memorizzato 'name' prima di lavorarci,' var name = $ ("# nome"); 'e ancora, su tutti gli altri browser ha funzionato solo CHROME ha dato un errore –

+0

Cosa intendi con il caching? Non sono un esperto di JQuery, ma se le funzioni '$()' sono essenzialmente funzioni 'getElementById()', l'elemento 'name' potrebbe non essere stato ancora caricato nel DOM. Perché è esclusivo di cromo è un puzzle però. A proposito, metti i tuoi script in fondo alla pagina? –

risposta

4

Penso che questo potrebbe essere dovuto a una variabile globale denominata nome. Se chiami il nome di qualcosa di diverso, name1, funziona in chrome. http://jsfiddle.net/R2PuZ/1/

+1

OMG)). Non ci ho nemmeno pensato. Grazie –

+0

Sì, ci ho giocato un po '... assegnare un valore a una variabile globale in Safari riconoscerà che si tratta di un elemento, ma non avrà nessuna (o almeno alcune) proprietà (come innerHTML) . Funziona in Firefox però. Molto strano. –

+0

sì, una di quelle cose che ti fanno bruciare l'olio di mezzanotte :) È molto interessante che il nome sia impostato su "risultato", che nel jsfiddle sembra provenire dal nome dell'iframe in cui viene visualizzato il risultato. Ancora giocando con esso .. –

Problemi correlati