Autor | Zpráva | ||
---|---|---|---|
ForestCZE Profil |
Zdravím, mám rád vlastní scripty, v kterých se vyznám, takže jsem se pokusil vytvořit vlastní slider.
HTML: <div data-foto="1" class="foto"></div> jQuery: var $fotky = 3; var $dalsi_foto = 0; setInterval(function(){ var $aktualni_foto = parseInt($("div.slider div.foto").attr("data-foto")); $("div.slider div.foto").fadeOut(500, function(){ $("div.slider div.foto").html("<img src='layout/img/slider/"+$slider+"/"+$aktualni_foto+".png' width='"+$delka_slideru+"' height='400' alt='Slider "+$aktualni_foto+"' />"); }); $("div.slider div.foto").fadeIn(1000); if($aktualni_foto < $fotky){ $dalsi_foto = $aktualni_foto+1; $("div.slider div.foto").attr("data-foto", $dalsi_foto); }else{ $dalsi_foto = 0; $("div.slider div.foto").attr("data-foto", "1"); } }, 5000); Normálně to funguje v pořádku. Načte mi to postupně 3 obrázky, pak se to vrátí a jede to od začátku :) Jen nechápu ten proces. Když si dám na stránce "Zobrazit prvek" a sleduji hodnotu v proměnné data-foto, tak se to chová nějak takto: Načte se stránka - data-foto="1" //žádný obrázek A pak každých 5000ms: data-foto="2" //načte se první obrázek data-foto="3" //načte se druhý obrázek data-foto="1" //načte se třetí obrázek data-foto="2" //opět první obrázek ... Co to sakra je? Dokáže mi to někdo vysvětlit a popřípadě říct, zda ten script nemá být jinak? Děkuji moc :) |
||
juriad Profil |
#2 · Zasláno: 24. 3. 2015, 23:12:55
ForestCZE:
Nějak mi uniká význam těch proměnných. Nevidím důvod si něco ukládat do atributů. Celé bych to udělal mnohem jednodušeji: Živá ukázka Máš nějaký důvod pojmenovávat proměnné s dolarem na začátku? |
||
ForestCZE Profil |
#3 · Zasláno: 24. 3. 2015, 23:32:43
juriad:
„Nějak mi uniká význam těch proměnných. Nevidím důvod si něco ukládat do atributů.“ Abych věděl, jaký obrázek je aktuálně načtený a nechal načíst další. „Máš nějaký důvod pojmenovávat proměnné s dolarem na začátku?“ Je v tom rozdíl? (z hlediska jQuery) |
||
juriad Profil |
ForestCZE:
Jestli tě zaráží, proč v data-foto je o jedničku vyšší číslo než je aktuálně zobrazená fotka, tak je to z důvodu, že: 1) na 7. řádku nastavíš takovou fotku, která je v data-foto 2) na řádku 12. zvýšíš aktuální fotku (tedy bude o jedna větší než je zobrazená) 3) na 13. řádku to číslo zapíšeš do data-foto (data-foto obsahuje o jedničku vyšší číslo než je číslo zobrazené fotky) 4) a pak se 5 sekund nic neděje; ty se na hodnotu atributu koukáš v tento okamžik. V data-foto tedy není číslo aktuální fotky, ale číslo následující fotky. > „Máš nějaký důvod pojmenovávat proměnné s dolarem na začátku?“ > Je v tom rozdíl? (z hlediska jQuery) Není, ale jelikož jQuery není nic víc než jedna funkce napsaná v JavaScriptu, měl bys používat jmenné konvence JavaScriptu. Také bys měl deklarovat proměnné slovem var . Používej var .
|
||
ForestCZE Profil |
#5 · Zasláno: 25. 3. 2015, 16:53:59
juriad:
„Není, ale jelikož jQuery není nic víc než jedna funkce napsaná v JavaScriptu, měl bys používat jmenné konvence JavaScriptu.“ Beru na vědomí a děkuju :) „Také bys měl deklarovat proměnné slovem var. Používej var.“ Vždyť mám u všech proměnných var v této ukázce .. nebo ne? |
||
juriad Profil |
#6 · Zasláno: 25. 3. 2015, 17:02:58
ForestCZE:
„Vždyť mám u všech proměnných var v této ukázce .. nebo ne?“ Máš pravdu, musel jsem si tě splést s někým jiným. |
||
ForestCZE Profil |
#7 · Zasláno: 26. 3. 2015, 00:16:16
juriad:
Abych to shrnul - děkuju za tu ukázku, je super, akorát bych se chtěl zeptat na current = current % count + 1; //co má za význam to %?
|
||
juriad Profil |
#8 · Zasláno: 26. 3. 2015, 00:28:42
To je modulo - také známé jako zbytek po dělení.
Je to jednoduchý způsob, jak bez podmínky po dosažení určité hodnoty jí resetovat zpět na nulu. Ukázka: Živá ukázka |
||
ForestCZE Profil |
#9 · Zasláno: 26. 3. 2015, 02:51:38
juriad:
Šikovná věc :) ... už jsem si to předělal na webu a všechno šlape, jak má (dodělal jsem si i šipky předchozí a další foto) ... To je tedy vše a ještě jednou děkuji. |
||
Časová prodleva: 9 let
|
0