Wywołanie setTimeout()

0

Załóżmy, że mam funkcję do efektu slideshow:

function slideImages()
{
  // sliding images
  setTimeout(slideImages(), 1000);
}

Aby to zadziałało należy ją wywołać raz.

Znam 2 sposoby na wykonanie tego:

window.addEventListener('load', slideImages());
window.onload = slideImages();

Myślę, że pierwszy sposób jest lepszy i "dzisiejszy". Można też użyć funkcji anonimowej.
Dobrze myślę? A może są lepsze sposoby?

3

wywołanie funkcji a przekazanie jej jako argument to dwie różne rzeczy.

slideImages() (z nawiasami na końcu) wywołuje funkcje (tu i teraz), jak chcesz ją przekazać, to musisz samą nazwę funkcji podać slideImages bez nawiasów.

Czyli to powinno być:

function slideImages()
{
  // sliding images
  setTimeout(slideImages, 1000);
}

window.addEventListener('load', slideImages);
window.onload = slideImages;

We wszystkich 3 miejscach zrobiłeś taki błąd, więc zakładam, że to nie była przypadkowa literówka.

1

Czyli poniższy sposób uznaję za "najlepszy"

function slideImages()
{
  // sliding images
  setTimeout(slideImages, 1000);
}
window.addEventListener('load', slideImages);

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