Om dynamisch events toe te voegen gebruik ik addEvent() van Dean Edwards / Tino Zijdel.
Dat werkt prima, maar ik heb een probleempje met de scope waar ik niet helemaal uit kom.
Kleine testcase:
Bij deze testcase krijg je onload een alert met de juiste tekst: Test!
Wanneer het selectfield changed is, krijg je wel een alert, maar zonder tekst (undefined). Hoe kan ik ervoor zorgen dat dit wel in de juiste scope uitgevoerd wordt?
Dank!
Dat werkt prima, maar ik heb een probleempje met de scope waar ik niet helemaal uit kom.
Kleine testcase:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title></title> <script type="text/javascript" src="js/addevent.js"></script> <script type="text/javascript"> function cTest(){ this.sTestVar = ''; this.init = function(){ addEvent(document.getElementById('testselect'), 'change', this.alert); // alert onchanged niet de value die ik wil. } this.alert = function(){ alert('this.sTestVar = ' + this.sTestVar); } } function load(){ var oTest = new cTest(); oTest.sTestVar = 'Test!'; oTest.init(); oTest.alert(); // geeft de juiste alert } addEvent(window, 'load', load); </script> </head> <body> <select id="testselect"> <option>1</option> <option>2</option> </select> </body> </html> |
Bij deze testcase krijg je onload een alert met de juiste tekst: Test!
Wanneer het selectfield changed is, krijg je wel een alert, maar zonder tekst (undefined). Hoe kan ik ervoor zorgen dat dit wel in de juiste scope uitgevoerd wordt?
Dank!
[ Voor 3% gewijzigd door orf op 05-11-2008 22:42 ]