delirium: Vergleichsfunktion: Keine globale Variablen in Opera

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

  1. 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.

    1. 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.