ik probeer de eventhandler van een element als method van een javascript-object te maken:
op de manier zoals ik het hierboven gedaan heb, werkt dat echter maar half, immers, wanneer Knop::klik() wordt getriggerd door een onclick event, is this.msg == "undefined", terwijl dat "dank u" zou moeten zijn. Als ik in de functie maakKnop() onder "cKnop = new Knop(...) gewoon cKnop.klik(); aantoep, dan werkt het gewoon wel.
Is er een manier waarop het wel mogelijk is om member variables van een object binnen een eventhandler aan te spreken?
(voorbeeld is slechts om het probleem aan te geven, het echte probleem zit em in een veel complexer javascript-object)
code:
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
| <html>
<head>
<script type="text/javascript">
function Knop(caption, msg, oParent) {
this.msg = msg;
oInput = document.createElement("INPUT");
oInput.type = "button";
oInput.value = caption;
oInput.onclick = this.klik;
oParent.appendChild(oInput);
}
Knop.prototype.klik = function() {
alert(this.msg);
}
function maakKnop(sParentId) {
oParent = document.getElementById(sParentId);
cKnop = new Knop("klik hier", "dank u", oParent);
}
</script>
</head>
<body id="body" onload="javascript:maakKnop('body')" />
</html> |
op de manier zoals ik het hierboven gedaan heb, werkt dat echter maar half, immers, wanneer Knop::klik() wordt getriggerd door een onclick event, is this.msg == "undefined", terwijl dat "dank u" zou moeten zijn. Als ik in de functie maakKnop() onder "cKnop = new Knop(...) gewoon cKnop.klik(); aantoep, dan werkt het gewoon wel.
Is er een manier waarop het wel mogelijk is om member variables van een object binnen een eventhandler aan te spreken?
(voorbeeld is slechts om het probleem aan te geven, het echte probleem zit em in een veel complexer javascript-object)