Probleem met setInterval/Timeout met een Object

Status
Niet open voor verdere reacties.

Casss

Gebruiker
Lid geworden
7 nov 2011
Berichten
47
Hallo iedereen, ik ben bezig met iets waarvoor ik een object een code elke 100 ms kan laten uitvoeren, nu lukt dit mij niet.

Code:
<html>
	<head>
	<script>
	function foo() {
		this.foobar = "niks";
		this.bar = function() {
			alert(this.foobar);
		}
		
		setInterval(this.bar,100);
	}
	
	window.onload = function() {
		var fooObject = new foo();
	}
	</script>
	</head>
	<body>
	
	</body>
</html>

Wat ik wil dat deze code doet is bij de window.onload het object foo creeren en elke 100 ms de functie bar uit te laten voeren, hij voert de functie wel uit, maar this.foobar is undefined. Nu weet ik dat ik dit kan doen:

Code:
<html>
	<head>
	<script>
	function foo() {
		this.foobar = "niks";
		
		setTimeout(function(me) {
			alert(me.foobar);
		},100,this);
	}
	
	window.onload = function() {
		var fooObject = new foo();
	}
	</script>
	</head>
	<body>
	
	</body>
</html>

Dit werkt echter wel in FF en Chrome maar niet in IE. Hoe kan ik dit het beste doen?

(de code is niet uit mijn ding maar dit is waar het probleem zit)

Bij voorbaat dank. :)
 
Het moment waarop de alert wordt weergegeven is this niet meer foo, omdat de functie bar niet in de scope van foo wordt uitgevoerd (komt door de setTimeout). Wil je toch je lokale variabelen benaderen maak dan een kopie van this in een andere variabele. Voorbeeld:

[js]
<html>
<head>
<script>
function foo() {
this.foobar = "niks";
var thisObject = this;
this.bar = function() {
alert(thisObject.foobar);
}

setInterval(this.bar,100);
}

window.onload = function() {
var fooObject = new foo();
}
</script>
</head>
<body>

</body>
</html>
[/js]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan