Vergleichsfunktion: Keine globale Variablen in Opera
delirium
- javascript
Hallo,
um zwei dimensionale Arrays zu sortieren, habe ich mir folgende Vergleichsfunktion gebastelt, die ich mit "bla.sort(cmp2D)" aufrufe:
var orderBy = null;
var orderDir = "asc";
function cmp2D(a, b) {
//alert(this.orderDir);
if(a[this.orderBy] < b[this.orderBy]) {
if(this.orderDir == "asc")
res = -1;
else
res = 1;
} else if(a[this.orderBy] < b[this.orderBy]) {
if(this.orderDir == "asc")
res = 1;
else
res = -1;
} else
res=0
return(res);
}
Im FF und IE7 funktioniert es wie es soll, nur nicht im Opera.
Grund: Die global Variablen "this.orderBy" und "this.orderDir" sind in Opera "undefined" (im FF und IE haben sie den korrekten Inhalt).
Wie kann ich dafür sorgen, dass sie auch in Opera den richtigen Wert haben?
Vielen Dank,
delirium
Im FF und IE7 funktioniert es wie es soll, nur nicht im Opera.
Grund: Die global Variablen "this.orderBy" und "this.orderDir" sind in Opera "undefined" (im FF und IE haben sie den korrekten Inhalt).
wie kommst du auf this?
this bezieht sich immer auf das aktuelle Objekt, ohne ein Objektinstanz ist das normalerweise window, offensichtlich sieht das Opera hier anders, nimm einfach window anstatt this.
Struppi.
wie kommst du auf this?
this bezieht sich immer auf das aktuelle Objekt, ohne ein Objektinstanz ist das normalerweise window, offensichtlich sieht das Opera hier anders, nimm einfach window anstatt this.Struppi.
Danke Dir. Das wusste ich nicht. Jetzt geht's.