2011-12-24 22 views
6

Zauważyłem błąd w funkcji window.onload. (Może to mój błąd) Problem polegał na tym, że wykorzystałem prostą funkcję, działało we wszystkich przeglądarkach, ale w Chrome.problem z funkcją window.onload

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

Wtedy właśnie do interesów, próbowała ten też:

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

We wszystkich powyższych przypadkach, narzędzia dev Chrome dał mi ten komunikat o błędzie:

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

mam rozwiązać ten błąd z następującym kodem.

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

Ale teraz chcesz wyjaśnienia, dlaczego nie zadziałało pierwsze 2 kawałek kodu?

+1

Nie wiem o drugim przykładzie, ale ten pierwszy blok kodu może żądać elementu, który jeszcze nie istnieje. –

+0

Przed rozpoczęciem pracy z cache'em zapisałem 'name',' var name = $ ("# name"); i jeszcze raz, we wszystkich innych przeglądarkach działało tylko CHROME dało błąd –

+0

Co masz na myśli przez buforowanie? Nie jestem ekspertem od JQuery, ale jeśli funkcje '$()' są zasadniczo funkcjami 'getElementById()', element 'name' może jeszcze nie załadował się do DOM. Dlaczego jest to wyłączne dla chrome to układanka. Czy umieszczasz swoje skrypty na dole strony? –

Odpowiedz

4

Myślę, że może to być zmienna globalna o nazwie nazwa. Jeśli nazwiesz coś inaczej, name1, działa on w chrome. http://jsfiddle.net/R2PuZ/1/

+1

OMG)). Nawet o tym nie myślałem. Dziękuję –

+0

Tak, trochę się z tym bawiłem ... Przypisanie wartości zmiennej globalnej w Safari potwierdzi, że jest to element, ale nie będzie miał żadnych (lub przynajmniej niektórych) właściwości (takich jak innerHTML) . Działa jednak w Firefoksie. Bardzo dziwny. –

+0

tak, jedna z tych rzeczy, która powoduje, że spalasz olej o północy :) To bardzo interesujące, że nazwa jest ustawiona na "wynik", co w jsfiddle wydaje się pochodzić od nazwy elementu iframe, w którym wyświetlany jest wynik. Nadal bawię się z nim .. –