Kezdőoldal » Számítástechnika » Weblapkészítés » JQuery. For ciklus. Miért ezt...

JQuery. For ciklus. Miért ezt csinálja?

Figyelt kérdés

Van 10 db divem, amiknek PHP-ban generált egyedi id-jük van. jQuery-ben erre az id-ra hivatkozva, egy for ciklussal ki szeretném őket jelölni egyesével x mp-nyi különbséggel, de valamiért nem úgy működik, ahogy kéne.


for (var i=0; i<10; i++)

{

setTimeout(function(){

$('#id'+i).addClass('kijelolt');

},2000);

}


Ennek nem azt kéne csinálnia, hogy 2 másodpercenként minden div-re egymás után ráteszi a megadott class-t? Mert nem ezt csinálja. Végigmegy a ciklus, eléri az utolsó elemet, és csak akkor adja hozzá a class-t, és csak az utolsó elemhez. Miért? Hol van a hiba a kódban?


A segítséget előre is köszönöm!


2017. nov. 18. 11:39
 1/4 anonim ***** válasza:

A probléma alapvetően Javascript-beli.


A gondot az okozza, hogy a for ciklus nem várja meg, míg a függvény végrehajtódik, így csak a legutolsó hajtódik végre.


Elvileg van rá megoldás:

[link]

így nézne ki a jelenlegi problémával:

[link]

bár - ha már van - inkább jobban preferálnám erre a célra a setInterval-t:

[link]

2017. nov. 18. 13:04
Hasznos számodra ez a válasz?
 2/4 A kérdező kommentje:
Köszönöm szépen!!! :)
2017. nov. 18. 13:54
 3/4 anonim ***** válasza:
Először a natív js-t nyálazd át, aztán jöhet a jQuery. :)
2017. nov. 18. 15:50
Hasznos számodra ez a válasz?
 4/4 2*Sü ***** válasza:
Az első válaszoló megoldásai jók. Hogy mi volt a probléma a megoldásoddal, ahhoz írnék még egy kis magyarázatot. A te megoldásod azt csinálja, hogy elindít kvázi egyszerre – pár órajel ciklus eltéréssel – tíz különböző időzítőt. Ugye itt a ciklus véget ér néhány ezredmásodperc után, és i értéke 10 lesz. Két másodperccel később mind a tíz időzítő lejár, a paraméterként megadott függvény lefut (szintén kvázi egyszerre). És mindegyik a $('#id'+i) -t keresi és mivel az i értéke még mindig 10, ezért mind a tíz időzítő esetén a $('#id10').addClass('kijelolt') fog lefutni.
2017. nov. 19. 03:13
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!