Ik heb een probleem met window.setInterval.
Ik heb een nieuwsdiv waarin ik de tekst wil laten bewegen. Dat doe ik met javascript. Ik verander iedere 50 miliseconden de style.top van de inhoud van de div. Nu ben ik object georienteerd bezig. Mijn setInterval geeft nu een fout omdat de functie die dan wordt uitgevoerd de eerdere objecten niet heeft. Dit klinkt misschien even vaag, maar als je het ziet snap je het wel.
Weten jullie een oplossing voor dit probleem? Ik heb btw al op google gezocht en met "setInterval problem objects javascript" kreeg ik de meeste resultaten alleen kon geen een mij verder helpen.
Typisch, volgens mij mag dat juist wel in Javascript.
Ik denk eerder dat het aan je setInterval aanroepen ligt. Daarin verwijs je naar window.this.scrollbar_move. Die bestaat niet. Je moet het zoeken in
window.setInterval(this.scrollbar_move, 50);
Je moet dan zelf even een alternatieve manier vinden om je parameters mee te geven. Kan ook simpel via closures bedenk ik net:
var _self = this; // omdat this niet lekker gaat icm losse functies
window.setInterval(function() {
_self.scrollbar_move('up');
}, 50);
edit: Je kan scrollbar_move overigens ook gewoon aan een variabele hangen binnen de functie, zodat hij niet vanaf buiten aanroepbaar is. Via de closures komt het dan vanzelf wel goed:
Op deze manier kan je dus private & public methods simuleren in Javascript. Alleen de functies die aan this zijn vastgebonden zijn van buiten af aanroepbaar.
Btw: Het script werkt nu, de this.scrollbar_move('up') wordt nu uitgevoerd (getest met alertje), hij doet nog een beetje gek maar dat ligt aan de code binnen scrollbar_move.
In je 2e code-blokje roep je _self.scrollbar_move aan, terwijl je in blokje 1 een functie teruggeeft die _self.scrollbar_move uit zal gaan voeren.
In blokje 2 zal scrollbar_move dus maar 1 keer aangeroepen worden, en de uitvoer van die functie (return-value) zal als argument aan setInterval gegeven worden, terwijl je in blokje 1 een functie als argument geeft. Je zou bijvoorbeeld ook scrollbar_move als argument mee kunnen geven, ware het niet dat je nu geen parameters meer aan scrollbar_move kan geven:
setInterval(_self.scrollbar_move, 50);
Merk op dat ik nu geen haakjes achter scrollbar_move zet. scrollbar_move is namelijk gewoon een object dat je aan vanalles mee kan geven. Dat is de grap van Javascript: Alles is een object (behalve true & false dan) en een functie is een object dat je uit kan voeren.