webForumDet fria alternativet

Försöker göra ett evighetsscript men problem har uppstått

JavaScript

2 svar · 421 visningar · startad av vic

Medlem sedan apr. 2006244 inlägg
Frågan#1

Följande funktion ska sätta igång en funktion med ett visst antal sekunders mellanrum. Den utför dock bara funktionen en gång sen stannar den? Hur ska man göra egentligen?

function Timer(TimeLeft, Again, Action)
	{
	var countdown = TimeLeft;
	
	function Blinker()
		{
		countdown--;
		
		if(countdown == 0) 
			{
			Action;
			setTimeout("Timer('"+Again+"', '"+Again+"', '"+Action+"')",1000);
			 }
			 else
				{
			 	setTimeout("Timer('" +countdown+ "', '" +Again+ "', '"+Action+"')",1000);
				}
		}
	
	Blinker();
	}

window.onload = function()
 {
 function Funk()
	{
	d.getElementById('menu').innerHTML = Date();	
	}
				
 Timer(3, 3, Funk());
}
Medlem sedan aug. 20039 340 inlägg
#2

Det här är min idé på en någorlunda snygg countdown-klass. (Din kod känns bara rlrig, no offence) Eftersom den är en klass, ska du använda new för att skapa ett objekt. Funktionen har en fjärde frivillig parameter, som anger om funktionen som skickas med ska köras en första gång. (Ange true, false eller utelämna för auto-false)
Och jag får säga till på skarpen, när du använder denna kod, försök låta bli att reidgera min funktion. Behåll den som den är, och ändra parametrarna. (Eller fråga mig)

<script type="text/javascript">
d=document;

function CountdownManager(period, times, action, tickNow){
	var action = action, period = period, times = times;

	function tick(){
		if(!--times)
			clearInterval(intId);
		
		action();
	}

	if ("undefined"!=typeof tickNow && tickNow)
		tick();

	if (times)
		var intId = setInterval(tick, period);
}

window.onload = function(){
	function Funk(){
		d.getElementById('menu').innerHTML = Date();
	}

	new CountdownManager(1000, 3, Funk);
}

</script>

<div id="menu">
(Start)
</div>
Medlem sedan apr. 2006244 inlägg
#3

Ser bra ut! tackar så mycket.

259 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)