Jag har problem med att skriva en javascript klass. Bara för att eliminera det, prova att flytta upp get_input och get_drp över show. Jag kasta hela den där skiten och körde istället med Microsoft AJAX Framework eftersom det är asp.net jag använder..Problem med att definiera klass
Jag vill inte använda mootools eller prototyperamverket för detta då det är en liten grej och kräver inte sådana mastodontramverk.
Min klass ser ut såhär
function ComboBox(inputId, drpId) {
this.get_inputId = function() { return inputId; }
this.set_inputId = function(value) { inputId = value; }
this.get_drpId = function() { return drpId; }
this.set_drpId = function(value) { drpId = value; }
document.getElementById(inputId).onclick = this.show;
}
ComboBox.prototype.show = function() {
this.get_drp().style.display = 'block';
this.get_drp().style.left = this.get_input().offsetLeft + 'px';
this.get_drp().style.width = this.get_input().offsetWidth + 'px';
}
ComboBox.prototype.get_input = function() {
return document.getElementById(this.get_inputId());
}
ComboBox.prototype.get_drp = function() {
return document.getElementById(this.get_drpId());
}
från koden anropas den såhär...
var box = new CombBox('combo1$input', 'combo1$drp');
om jag klickar på inputfältet (Så att onclick eventet triggar) så får jag error att this.get_drp() is not a function.
Om jag därimot triggar show metoden såhär
var box = new CombBox('combo1$input', 'combo1$drp');
box.show();
så funkar det.. Vad gör jag för fel?Sv: Problem med att definiera klass
Sen kan det vara (och är förmodligen, eftersom det funkar om du kör 'show') min js som är ringrostig, men är det verkligen rätt gjort med inputID och drpID i konstruktorn?
Annars är väl nästa logiska steg att kolla vad man får om man kör t.ex.:
ComboBox.prototype.show = function() {
alert(''+this.drpId);
alert(this.get_drp().id);
}
Och se vad skillnaden blir i de båda fallen?Sv:Problem med att definiera klass
Om jag skapar min class direkt i aspxfilen så funkar koden, för då lägger sig Microsoft AJAX Framework filen ovanför min klass..
Men lägger jag min klass i egen .js fil och registrer den med
ScriptManager.RegisterClientScriptResource(typeof(ComboBox), "Agero.Anders.Web.Controls.JS.ComboBox.js");
Så hamnar min js fil före Microsoft AJAX Framework och jag får not defined problem..
Hur sjutton fixar man detta?