JS : for() loop wait

Status
Niet open voor verdere reacties.

Strega

Gebruiker
Lid geworden
31 aug 2009
Berichten
8
Hallo,

Ik ben nu al even aan het proberen om men for loop zich telkens te laten herhalen , maar voor hij herhaald moet hij 50 ms wachten.
Hoe doe ik dit?

Code:
function fade_com() {
	for(com_op = 0; com_op <= 1; com_op = com_op + 0.05) {
		document.getElementById("comment").style.opacity=com_op
		// Hier zou hij 50 ms moeten wachten voor hij de loop weer herhaald
	}
	// Hier moet een nieuwe loop komen
}
Dit is mijn body
Code:
<a href='#comment' onclick='fade_com();'>Fade In</a><p> 
<div id='comment' style='opacity:0;'>
Op zich werkt het script, enkel dat hij niet wacht zorgt ervoor dat het verschil niet zichtbaar is.
Het ziet er nu uit alsof je van display:none; naar display:block; gaat.

Groeten, Bart
 
Je kunt de setInterval() functie gebruiken om een functie elke 50ms aan te roepen.

Moet je wel de code iets anders laten lopen though :)

Als je overigens fade-effecten wilt, kun je ook een library zoals JQuery downloaden, die hebben al dat soort dingen ingebouwd zitten.
 
als ik het goed begrijp wil je het volgende telkens opnieuw uitvoeren maar met een pauze er tussen.

[JS]document.getElementById("comment").style.opacity=com_op[/JS]

ik heb hier niet zoveel ervaring in meer ik heb ooit eens iets gedaan met
setTimeout(func, time).
deze functie roept een ander functie op na een bepaalde tijd de tijd is in ms weergegeven

in u geval zou ik het volgende gedaan hebben (weet niet zeker of het werkt);

[XML]var com_op=0;

function fade_com() {
if(com_op <= 1){
document.getElementById("comment").style.opacity=com_op;
com_op+=0.05;
setTimeout(fade_com(), 50).
}
else{
// Hier moet een nieuwe loop komen
}

}
[/XML]
 
Nope, dat gaat niet lukken: setTimeout neemt een function-pointer als parameter, niet een function-call.

[JS]function doStuff()
{
var can_go_another_time = true;

//stuff
//more stuff

if(can_go_another_time === true)
{
setTimeout(doStuff, 50);
}
}[/JS]
Maar voor de rest is het idee zoals thomas zei.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan