webForumDet fria alternativet

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

JavaScriptur 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 342 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.

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