Dmitri Rettig: frage zu array!

Beitrag lesen

Hallo,

ich habe mir echt Mühe gegeben, den Quelltext zu verstehen. Ich habe es bar nicht geschaft.

So verstehe ich den Quelltext:

// Funktion soll einen Farbwechsel von colorFROM nach colorTO bewirken,
// und zwar über step Zwischenstufen
function fade_IN_OUT(colorFROM, colorTO, step)
{
   colorX = new Array(colorFROM, colorTO);
   /*
      colorX ist ein Array
      Die obige Notation gleicht
      colorX = new Array();
      colorX[0] = colorFROM;
      colorX[1] = colorTO;

wenn du die Farben spaeter nicht in einer
      Schleife mit numerischen Indizies ansprechen
      wirst, dann kannst auch auch assoziative
      Arrays verwenden

colorX["von"] = colorFROM;
      colorX["nach"] = colorTO;
   */

var i = colorX[0, 1];
   /*
      Das verstehe ich nicht!
      Was soll denn da rauskommen?
      Was erwartest du?
      Vielleicht kenne ich die Notation nicht?
   */

var red = colorX[i].substr(1, 2);
   var green = colorX[i].substr(3, 4);
   var blue = colorX[i].substr(5, 6);

/*
      Willst du den Rot-, Grün- und Blauanteil
      _beider_ Farben speichern?
      Unklar wegen der unklaren i-Definition

colorX["von"]["rot"] = colorX["von"].substr(1, 2);
      colorX["von"]["gruen"] = colorX["von"].substr(3, 4);
      colorX["von"]["blau"] = colorX["von"].substr(5, 6);

colorX["nach"]["rot"] = colorX["nach"].substr(1, 2);
      colorX["nach"]["gruen"] = colorX["nach"].substr(3, 4);
      colorX["nach"]["blau"] = colorX["nach"].substr(5, 6);

*/

// Color: Convert variables to colors.

color = Math.floor((red) (green) (blue) / 16)
   /*
      Das verstehe ich ebenfalls nicht.
      Was willst du machen?
      Wenn du zwischen (red), (green) und (blue)
      Malzeichen setzt, und hinten noch ein Semikolon
      dann kann so etwas kommen:
      Angenommen die anfangsfarbe sei #AABBCC
      und die Endfarbe #DDEEFF

colorX["von"]["rot"] = "AA";
      colorX["von"]["gruen"] = "BB";
      colorX["von"]["blau"] = "CC";

colorX["nach"]["rot"] = "DD";
      colorX["nach"]["gruen"] = "EE";
      colorX["nach"]["blau"] = "FF";

color = Math.floor("AA" * "BB" * "CC" / 16);

Du operierst mit Zeichenketten, und nicht mit Zahlen.
   */

// - - - - - - - - - -

// Color: Max. colors = Black/White

if(color < 0) {

return "00" // Semikolon!

}

if(color > 255) {

return "FF" // Semikolon!

}

/*
      Geschickter ist else if
      Bei vielen Fallunterscheidungen wird das "Programm"
      Dann schneller.
      Wenn color < 0 ist, dann ist es klar, dass
      color > 255 gleich false ist.
   */

// - - - - - - - - - -

}

An die Methode musst du Zeichenketten übergeben. Anführungsstriche bei der Parameterüberhabe nicht vergessen!
<a href="index.php" onMouseOver="fade_IN_OUT('#000000', '#FFFFFF', 75);" onMouseOut="fade_IN_OUT('#FFFFFF', '#000000', 75);">TestLink</a>

Wenn du willst, kannst du mir den ganzen Quelltext schicken. Aber bitte dann mit Kommentaren, damit ich deinen Denkweg nachvollziehen kann. Oder du Postest ihn ins Form.

MfG Dmitri

PS.: Hast du keine Email-Adresse?