webForumDet fria alternativet

se variabel medan for-loopen snurrar?

JavaScript

2 svar · 189 visningar · startad av jupiters

Medlem sedan sep. 2002104 inlägg
Frågan#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;
}
Medlem 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å.

Medlem 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;
}

254 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)