settimeout implied eval is evil
maak setTimeout valide voor JSLint

home | index | menu | help

Er is geen CSS ondersteuning.

		
		

Als je een voorbeeldje van een website "geplukt" hebt, en je test later de pagina in JSLint, wil het nog wel eens gebeuren dat je de onderstaande regel te zien krijgt (vanzelfsprekend met een iets andere omschrijving van de foutmeldings-regel..):

Implied eval is evil. Pass a function instead of a string. line xx, char xx:
setTimeout("kleurtje()", 1000);

Dit komt omdat degene die de code gemaakt heeft het helemaal niet belangrijk blijkt te vinden om zijn code "zuiver" te houden. Met een hele kleine inspanning kan je deze "schoonheids-foutjes" herstellen. Ik neem de onderstaande code als voorbeeld. De hierboven-staande foutmelding krijg je als je dit scriptje op de volgende manier schrijft:

<!DOCTYPE html>
	<html> 
	<head> 
		<title>setTimeout niet valide</title> 
		<script> 
			var kleurindex = 0; 
			var kleurarray = ["#020","#025","#520"]; 
			var eenkleur; 
			function kleurtje(){ 
				kleurindex++; 
				if (kleurindex >= kleurarray.length){ 
				kleurindex = 0;} 
				eenkleur = kleurarray[kleurindex]; 
				document.body.style.backgroundColor = eenkleur; 
				setTimeout("kleurtje()", 1000); 
			} 
		</script> 
	</head> 
	<body onload="kleurtje()"> 
	</body>
	</html> 
		

Zonder nu verschrikkelijk interessant te gaan doen en uitleggen dat je een functie "eraan moet plakken", en nog een heleboel andere niet zo relevante onzin, geef ik je gelijk de oplossing. Kijk even hoe de setTimeout geregeld is in de onderstaande code, en gebruik dat (voortaan) gewoon in jouw script(s).

<!DOCTYPE html>
	<html> 
	<head> 
		<title>setTimeout is helemaal valide</title> 
		<script> 
			var kleurindex = 0; 
			var kleurarray = ["#020","#025","#520"]; 
			var eenkleur; 
			function kleurtje(){ 
				kleurindex++; 
				if (kleurindex >= kleurarray.length){ 
				kleurindex = 0;} 
				eenkleur = kleurarray[kleurindex]; 
				document.body.style.backgroundColor = eenkleur; 
				setTimeout(function(){kleurtje();}, 1000);
			} 
		</script> 
	</head> 
	<body onload="kleurtje()"> 
	</body>
	</html> 
		

cache 03-09-2010