Forum » Programiranje » [Javascript] Problem z setTimeout-om
[Javascript] Problem z setTimeout-om
matijaz74 ::
Pozdravljeni! Nikakor mi ni jasno.
To skripto poganjam preko interneta. Browser mi zablokira in javi javascript napako. Iz kode je razvidno, da želim samo izpis. Tu je nekaj narobe. Rešitev je toliko preko neta. Pa nobena ni prava. Ali kdo od vas pozna pravo rešitev?
Hvala za pomoč in za odgovor.
var velikost=2000; var time=500; for(var i=1;i<=velikost;i++){ setTimeout(function(){ $("#div_izpis_prenosa").html("Velikost: "+i); },time*i); }
To skripto poganjam preko interneta. Browser mi zablokira in javi javascript napako. Iz kode je razvidno, da želim samo izpis. Tu je nekaj narobe. Rešitev je toliko preko neta. Pa nobena ni prava. Ali kdo od vas pozna pravo rešitev?
Hvala za pomoč in za odgovor.
lp
Matijaž
Matijaž
Qcube ::
Koda deluje.
Verjetno nimaš elementa #div_izpis_prenosa in nima kam izpisati rezultata. Npr.
Verjetno nimaš elementa #div_izpis_prenosa in nima kam izpisati rezultata. Npr.
<body id="div_izpis_prenosa"></body>
matijaz74 ::
Koda izpiše v
<div id="div_izpis_prenosa"></div>vendar imam občutek da setTimeout ne deluje. No pogledal sem tudi preko boljše in računalnika in deluje koda. Pokaže samo končni rezultat. Jaz pa želim da počasi šteje v intervalu 0,5s. Zato pa sem napisal
time=500Kodo sem spremenil v to:
velikost=2000 time=500; for(i=0;i<velikost;i++){ setTimeout(function(){ izpis(i) },time); } function izpis(n){ $("#div_izpis_prenosa").html("Velikost: "+n); }in deluje enako. S tem setTimeout-om res težave. Hvala za odgovor.
lp
Matijaž
Matijaž
Zgodovina sprememb…
- spremenil: matijaz74 ()
illion ::
velikost=<?php echo $num_rows; ?>; var time=1000; var i = 0; var idInterval = setInterval(function () { if(i++ > velikost) clearInterval(idInterval); else izpis(i); }, 500); function izpis(n){ $("#div_izpis_prenosa").html("Velikost: "+n); }
LeQuack ::
Zanka se izvede takoj, tista funkcija, ki je definirana v setTimeout pa se kliče asinhrono po pretečenem času. To pomeni, da je isto kot bi samo zamaknil izvajanje zanke. Ker že uporabljaš jQuery, lahko uporabiš tudi tole, ki podpira sinhrone zakasnitve:
http://benalman.com/projects/jquery-dot...
http://benalman.com/projects/jquery-dot...
Quack !
Zgodovina sprememb…
- spremenil: LeQuack ()
frudi ::
Namesto
naredi:
S tem efektivno za vsak klic anonimne funkcije znotraj setTimeout narediš svoj closure, tako da ima vsaka anonimna funkcija dostop do 'svoje' spremenljivke k (mjah, ne znam dobro razložit, kako delujejo closures ... ko jih boš sam skapiral, ti bo jasno).
var velikost=2000; var time=500; for(var i=1;i<=velikost;i++){ setTimeout(function(){ $("#div_izpis_prenosa").html("Velikost: "+i); },time*i); }
naredi:
var velikost = 2000; var time = 500; for(var i = 1; i <= velikost; i++){ var foo = function(k) { setTimeout(function() { $('#div_izpis_prenosa').html('velikost: ' + k); }, time * k); }; foo(i); };
S tem efektivno za vsak klic anonimne funkcije znotraj setTimeout narediš svoj closure, tako da ima vsaka anonimna funkcija dostop do 'svoje' spremenljivke k (mjah, ne znam dobro razložit, kako delujejo closures ... ko jih boš sam skapiral, ti bo jasno).
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)
MrBrdo ::
Odvečno kompliciranje, če lahko uporabiš setInterval, ali pa na koncu funkcije kličeš ponovno setTimeout.
MrBrdo
frudi ::
Ja, to bi bilo enostavneje, ampak sedaj ima dobro priložnost, da se nauči, kako delujejo zaprtja :). Če si tega ne razčisti, bo podobne napake ponavljal še naprej.
1ACDoHVj3wn7N4EMpGVU4YGLR9HTfkNhTd... in case I've written something useful :)
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Slo-Tech userscriptsOddelek: Izdelava spletišč | 5175 (2627) | jype |
» | JqueryOddelek: Izdelava spletišč | 1804 (1528) | mk818764 |
» | Definiranje spremenjivke - javascriptOddelek: Programiranje | 1214 (1137) | a-ptuj |
» | youtube dolpotegOddelek: Pomoč in nasveti | 1102 (1002) | pino |
» | javascript nerazumljivoOddelek: Programiranje | 1407 (1264) | netanyahu |