slider czasowy

0

Witam serdecznie. Piszę slider, który zmienia obraz co 8 sekund automatycznie, lub po kliknięciu na div o klasie empty. Dlaczego w poniższym kodzie nie działa metoda clearTimeout(), kod po kliknięciu nadal przewija slide czasowo?

var slideNr = Math.floor((Math.random()*5)+1);

var time = '';
function zmienslide(time)
{
        slideNr++;
        if(slideNr > 5) slideNr = 1;
       var zmienna = 'img/'+slideNr+'.jpg';
       $('img').attr('src', zmienna);
      //$('img').fadeIn(100);
    time = setTimeout('zmienslide()', 8000);
    //setTimeout('schowaj()', 5900);
    return time;
}

alert(time);
$(window).on('load', function () {
 
    zmienslide();
    
});

$('.empty').on('click', function (time) {
    clearTimeout(time);
});
1

masz bałagan w zmiennych.

var time = '';

To jest okej. Zmienna globalna niby, ale w tym wypadku pewnie to, co chcesz zrobić. (chociaż nie wiem po co przypisujesz pustego stringa do tej zmiennej).

$('.empty').on('click', function (time) {

To jednak tak juz nie zadziała. Event handler będzie miał jako argument obiekt eventu a nie "time".

function zmienslide(time)

A tutaj nadpisujesz zmienną time, więc jeśli przypisujesz w środku time = setTimeout(.......) to tak naprawdę przypisujesz to do lokalne zmiennej funkcji, a nie do tej globalnej, którą zadeklarowałeś.

Mógłbyś oczywiście podawać zmienną time jako argument, problem w tym, że tego nie robisz, wywołujesz funkcję bez argumentów:

zmienslide();

więc nie ma co się dziwić, że tego argumentu nie ma.
Albo robisz coś na zmiennej globalnej i nie musisz przekazywać argumentów, albo przekazujesz to przez argumenty, a ty próbujesz robić zmienną globalną, i jednocześnie nadpisujesz ją argumentami, których i tak nie ustawiasz....

 setTimeout('zmienslide()', 8000);

No i abstrahując od reszty, to nie rób evala. Bezsensem jest podawanie stringa do setTimeout, skoro możesz podać funkcję:

setTimeout(zmienslide, 8000);

(funkcje są obiektami w JS, więc można podawać je jako argument).

No i weź to napisz tak
```javascript
TUTAJ KOD
```
bo teraz ci się rozjechało kolorowanie.

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