Autor Zpráva
ondra256
Profil
Zdravím,

dělám slider a chci aby se plynule měnily obrázky

jdu na to takto

$("#slider_img").fadeOut(2000);// zmizeni stavajciho obrazku
$("#slider_img").attr("src",novyObrazek); // zmena src atributu v img
$("#slider_img").fadeIn(2000); // objeveni noveho obrazku

Kód se ale vykoná tak, že nejdříve změní obrázek, následně zmizí a poté se znova objeví.

Jak se dá vyřešit tato situace?

Zkoušel jsem funkci delay, ale ta nefunguje.
Virtus
Profil
Zdravím,

tohle by snad mohlo pomoct:
$("#slider_img").fadeOut(2000, function() {
       $("#slider_img").attr('src', novyObrazek);
       $("#slider_img").fadeIn(2000);
    });

jinak zde odkaz na celý vlákno, odkud je uvedená část kódu:
http://stackoverflow.com/questions/12696881/jquery-fadein-fadeout-img-change
ondra256
Profil
Jo super díky funguje.

Jen ještě jeden dotaz.

Chci aby se slider automaticky přepínal po 10 sekundách a aby měl uživatel možnost přepnout slidy sám manuálně (šipkama).

Což jsem díky zdrojáku, který jste mně poskytli dal dohromady.

Mám funkci pro automatické přepínání obrázků

    function automaticSwitchSlide(){
        $("#slider_img").fadeOut(2000, function() {
            nextImage();
            $("#slider_img").attr("src",basePath + i + ".jpg");
            $("#slider_img").fadeIn(2000);
            setTimeout(function(){automaticSwitchSlide()},10000);
        });    
    }

Problém je v tom, že když manuálně přepnu slidy, tak se funkce automaticSwitchSlide nerestartuje, ale pořád pokračuje, takže se další slide automaticky nepřepne po 10 sekundách, ale už třeba po 2.

Potřeboval bych proto ve funkci pro manualni prepinani zastavit automaticke prepinani, poté přepnout obrázek a znovu zavolat funkci pro automatické přepínání. tím by se dodrželo těch 10 sekund.

Jen nevím jak zastavit funkci automaticSwitchSlide.

Můžete mně někdo poradit?

děkuju
rafej
Profil
Zrušit časovač lze pomocí funkce clearTimeout.
Nejdřív si uložíš časovač do proměnné - změň řádek 6 takto:
var tm  =  setTimeout(function(){automaticSwitchSlide()},10000);
+ vrať jí z funkce ven (parametrem nebo návrat. hodnotou).

A až budeš chtít časovač zrušit, tak takto:
clearTimeout(tm);
Pokud budeš ještě upravovat tlačítka či přechody / efekty při vypnutí, hoď si to do další funkce, ale nezapomeň jí předat proměnou tm.
Pro pokračování stačí znovu zavolat funkci automaticSwitchSlide.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: