Ik wil een generieke progress-bar maken in javascript. Dus ik maak een mooi object met methods, zoiets als:
Bovenstaande gaat niet werken, omdat window.setInterval de functie Ding_doeHet wel aanroept, maar niet in de object-context van x.
Nu lijkt het me niet echt mogelijk om dat wel te doen, maar hoe kan ik toch een generiek javascript object maken, waarbij dat wel mogelijk is. Het beste wat ik kan bedenken is:
maar echt bevredigend vind ik het niet: niet echt netjes
Weet iemand een betere oplossing?
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
| Ding.prototype.start=Ding_start; Ding.prototype.stop=Ding_stop; Ding.prototype.doeHet=Ding_doeHet; function Ding(chProgress) { this.interval=100; this.ch=chProgress||'.'; } function Ding_start() { this.intervalID=window.setInterval( this.doeHet, this.interval ); } function Ding_stop() { window.clearInterval(this.intervalID); } function Ding_doeHet() { //dit werkt niet, omdat het niet draait in de object-context van het object Ding... window.status+=this.ch; } var x=new Ding('.'); x.start(); |
Bovenstaande gaat niet werken, omdat window.setInterval de functie Ding_doeHet wel aanroept, maar niet in de object-context van x.
Nu lijkt het me niet echt mogelijk om dat wel te doen, maar hoe kan ik toch een generiek javascript object maken, waarbij dat wel mogelijk is. Het beste wat ik kan bedenken is:
code:
1
2
3
4
5
6
7
8
9
| function Ding(chProgress,varName)
{
this.varName=varName;
}
...
function Ding_start()
{
this.intervalID=window.setInterval( this.varName+'.doeHet()', this.interval );
} |
maar echt bevredigend vind ik het niet: niet echt netjes
Weet iemand een betere oplossing?