Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] zmiana css dzieci dla kazdego inne opóźnienie
Forum PHP.pl > Forum > Przedszkole
pakolord
witam,

jak zrobić aby zmiana css była opóźniona w czasie dla każdego elementu np.

li:eq(1) zmiana tła po 1 sek.
li:eq(2) zmiana tła po 2 sek.
li:eq(3) zmiana tła po 3 sek.
... itd.

próbuje tak ale chyba idę zła drogą:

  1. var x = ('li').length;
  2. var y = 0;
  3.  
  4. for(x, y; y<x; y++)
  5. {
  6. setTimeout(function(){
  7.  
  8. $('li:eq('+ y +')').css('background', 'blue');
  9.  
  10. }, y * 1000);
  11. }
trueblue
Sprawdź pierwszą linię.

Selectory w CSS zaczynają się od 1.
Możesz też to zrobić w czystym CSS.
pakolord
nic to nie zmienia tongue.gif

jak robię tak jak napisałem czy od 0 czy 1 to style mi się zmieniają tylko dla pierwszego elementu.

w css więcej pisania, chciałem zrobić pętle w js dla ograniczania kodu.
SmokAnalog
Można w czystym CSS, ale to różne opóźnienie dla poszczególnych <li> byłoby upierdliwe do osiągnięcia, zwłaszcza jeżeli nie wiadomo z góry ile elementów będzie na liście.

Wersja jQuery:
[JAVASCRIPT] pobierz, plaintext
  1. $('li').each(function (index) {
  2. setTimeout(function (li) {
  3. $(li).css('background', 'blue');
  4. }, index * 1000, this);
  5. });
[JAVASCRIPT] pobierz, plaintext


Wersja JavaScript :
[JAVASCRIPT] pobierz, plaintext
  1. document.querySelectorAll('li').forEach((li, index) => {
  2. setTimeout(() => {li.style.background = 'blue';}, index * 1000);
  3. });
[JAVASCRIPT] pobierz, plaintext


P.S. Znalazłem bug na forum. Tekst "JavaScript :" bez spacji przed dwukropkiem zostaje zamieniony na "java script:" biggrin.gif Musiałem więc dać spację przed dwukropkiem. Wiem, to straszne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.