webForumDet fria alternativet

se variabel medan for-loopen snurrar?

2 svar · 187 visningar · startad av jupiters

jupitersMedlem sedan sep. 2002104 inlägg
#1

jag har en for-loop som kör en ibland lite tidskrävande
beräkning av allehanda värden och strängar.
I denna loop finns en annan variabel som bara räknas upp under speciella förutsättningar. Vilka kan kvitta. Problemet är att om man använder nedanstående princip får man av någon anledning bara se resultatet när loopen är klar. Knappen eller textrutans innehåll uppdateras endast när loopen är slut. Jag skulle vilja att detta skedde medan loopen snurrade. Frågan är om det går att framtvinga detta på nåt sätt?
Kanske finns det nån begränsning för hur Javascript jobbar i detta fall.

Det enda som fungerar är om man skriver:
"window.status=annanvariabel" inuti loopen.
Då sker uppdateringen kontinuerligt.
Kan möjligen ha att göra med att statusraden ligger utanför själva webbsidan.
Men det passar inte i detta fall.
Jag vill ha det på webbsidan. Men går det?

for (x = 0;  x \< tal; x++){
      document.ettform.knappellertextruta.value=annanvariabel;
}
JojoxxMedlem sedan juni 20004 308 inlägg
#2

En tänkbar lösning är att byta ut loopen mot en funtion som körs, i slutet av funktionen kollas om villkoret stämmer för att "loopen" (som nu är en funktion) skall köras en gång till. I så fall anropar du setTimeout("funktionsnamn();",100); 100 är alltså fördröjningen i millisekunder. Här får webbläsaren tid att tycka om sig själv (läs uppdatera dina fält) innan allt körs igen. Är det dock som det låter att loopen körs många gånger är det kanske inte hållbart tidsmässigt, men det är den lösning jag kan komma på.

jupitersMedlem sedan sep. 2002104 inlägg
#3

Tack för svaret.
det var en intressant idè! Men i många fall snurrar loopen några tusen varv, ibland mer, så man ska nog inte sega ner beräkningen om det inte är absolut nödvändigt, så jag får använda statusraden trots allt. Detta ger ju i alla fall en jämn uppdatering.

if (z % 500 == 0) {
window.status=resultat + " / " + z;
}

136 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)