Jak to "naprawić" - tak na szybko, żeby działało - to chyba wiesz.
A jak to rozwiązać. Hm. Coś takiego powinieneś zrobić w formie pluginu do jQuery, żeby potem wywołanie tego przypominało coś takiego:
$('#obrazki_w_logo').matiSlider({fade: 2000, delay: 3000});
A w kodzie html żeby było coś np takiego:
<ul id="obrazki_w_logo">
<li><img src="/sciezka/do/obrazka1.jpg" alt="tytuł do obrazka" /></li>
<li><img src="/sciezka/do/obrazka2.jpg" alt="inny tytuł" /></li>
<li><img src="/sciezka/do/obrazka3.jpg" alt="itd" /></li>
</ul>
Twój plugin zapisze sobie dane z tych elementów w HTML, ich ilość, utworzy jakiegośtam diva z obrazkiem i tytułem, usunie wyżej napisany kod html (bo nie chcesz go wyświetlać raczej, choć temu pewnie i tak nadałbyś display: none
), ew usunie coś, co pojawia się zamiast slidera w przypadku gdy javascript jest niedostępny. Potem używając dodatkowych parametrów rozpocznie animację.
Takie wywołanie JS będziesz mógł użyć też na wielu elementach z różnymi parametrami - tak jak każdy inny slider jQuery możesz wywołać na stronie kilkukrotnie.
Przewaga takiego rozwiązania:
- Lepsze SEO (w Twoim przykładzie może to nie ma dużego znaczenia, ale w sliderach często jest tekst, który chcielibyśmy, żeby wyszukiwarki indeksowały - nie zaindeksują go zdefiniowanego w pliku JS)
- Wygoda - lepiej dopisać jedno
<li>
czy zmienić liczbę (czas fade'ów) w wywołaniu niż dopisywać kolejne else ify
z kolejnymi numerami dla zmiennej a
i generalnie zaśmiecać kod powtórzeniami
- Możliwość łatwego ponownego użycia
- To wcale nie jest takie trudne jak się wydaje napisać coś takiego porządnie ;)
Wady:
- Jak się ni w ząb nic nie kuma, to robienie miliona
else ifów
wydaje się łatwiejsze :P
PS. Ja sam nie robię tego typu rzeczy w formie pluginów do jQuery, tylko trochę inaczej, ale główna idea jest ta sama - ma być łatwy do zrozumienia, rozszerzalny i łatwy do ponownego użycia kod. Jak znajdę trochę czasu (koło niedzieli pewnie) to zapostuję tu jakiś przykład z dokładnym opisem jeżeli jesteś zainteresowany.