Losowanie efektu dla obiektu

0

Witam!
Mam pewnego diva na stronie z klasą css .box. Próbowałem zrobić aby po naciśnięciu jakiegoś przycisku w menu box znikał z jakimś losowym efektem, a następnie ponownie się pokazywał również z losowym efektem. Stworzyłem taki kod, ale nie rozumiem błędu TypeError: Property '#<Object>' of object #<Object> is not a function. Oto kod:

function rand_effect() { // zwraca losowy efekt
	var effects = new Array("explode", "Blind","Bounce", "Clip", "Drop", "Fold","Puff", "Slide","Scale","Size");
	var rand = Math.round(Math.random() * effects.length);
	//alert(effects[rand]);
	return effects[rand];
}



$("#uslugi").click(function() {
			$(".box").hide("explode",{pieces: 16}, 2000,function() {});
});

Po kliknięciu w przycisk wyskakuje powyższy błąd w konsoli i nic się nie dzieje. Z góry dzięki za pomoc!

0

A biblioteka UI/Effects załadowana?

0
  1. (to co napisał @dzek69 -- efekty, które podałeś, nie są wbudowane w samo jQuery, należą do jQuery UI)
  2. Nie pokazałeś nawet nigdzie wywołania funkcji rand_effect(). Funkcja niewywoływana na pewno nie powoduje żadnego błędu. Czy naprawdę jej nie wywołujesz i lecisz zawsze na "explode", czy dałeś niewłaściwy fragment kodu?
  3. Funkcja rand_effect() w ok. 10% przypadkach zwróci undefined. Powinieneś mnożyć przez (effects.length - 1). Bez odjęcia tej jedynki, czasami w rand zostaje zapisywane 10 (czyli tyle co effects.length), a elementy tablicy są przecież numerowane od 0 do 9.
  4. Nie jestem pewien, czy funkcje używające efektów wykonują .toLowerCase() na nazwie efektu, ale nic mi o tym nie wiadomo (nie chce mi się sprawdzać). Jeśli tego nie robią, to dostajesz błąd dlatego że masz Blind, a powinno być blind. IIRC, zawsze pisało się to małymi literami.
0

@dzek69 załadowana :), ale zaktualizowałem sobie tą bibliotekę.
@bswierczynski .toLowerCase() rozwiązało sprawę, dziękuję ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1