dietttz: frage zu array!

hi!

eigentlich müsste ich anstatt diesem hier:

colorX = new Array(colorFROM, colorTO);
    var i = colorX[0, 1];

auch einfach nur das hier machen oder?

var i[0] = colorFROM;
var i[1] = colorTO;

mfg dietttz

  1. Hi,

    eigentlich müsste ich anstatt diesem hier:

    colorX = new Array(colorFROM, colorTO);
        var i = colorX[0, 1];

    auch einfach nur das hier machen oder?

    var i[0] = colorFROM;
    var i[1] = colorTO;

    Hat sich an der JavaScript Syntax in den letzten zwei Jahren etwas geändert, ohne dass ich es gemerkt habe?

    colorX = new Array(colorFROM, colorTO);
        var i = colorX[0, 1];

    Das hier ist mir völlig unbekannt. Woher hast du den Code?

    MfG Dmitri

    1. Hat sich an der JavaScript Syntax in den letzten zwei Jahren etwas geändert, ohne dass ich es gemerkt habe?

      ich denke nicht ;)

      Das hier ist mir völlig unbekannt. Woher hast du den Code?

      aus meinem gedächtnis oder stimmt da was nicht?

      mfg

      1. Hi,

        wenn du einfach zwei Farben in einem Array namens i abspeichern willst, dann:

        i = new Array(1); // bzw. i = new Array(); für unbekannt wieviele Farben.

        i[0] = FarbeFROM;
        i[1] = FarbeTO;

        Natürlich muss man vorher FarbeFROM und FarbeTO definiert haben.

        MfG Dmitri

        1. Vielen Dank Dimitri!

          Also, ich erklär's dir mal vereinfacht...

          Ich möchte ein Link-FadeIN/OUT machen.

          Ich weiß, es gibt schon vorgeschriebene, die ich nehmen kann, aber ich möchte diesen selber über die möglichst einfachste Weise machen.

          Ich habe also einen Link.

          <a href="index.php" onMouseOver="fade_IN_OUT(#000000, #FFFFFF, 75);" onMouseOut="fade_IN_OUT(#FFFFFF, #000000, 75);">TestLink</a>

          Das Script sieht bis jetzt folgendermaßen aus:

          <script type="text/javascript">
          <!--

          function fade_IN_OUT(colorFROM, colorTO, step) {

          colorX = new Array(colorFROM, colorTO);
              var i = colorX[0, 1];

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

          // Color: Convert variables to colors.

          color = Math.floor((red) (green) (blue) / 16)

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

          // Color: Max. colors = Black/White

          if(color < 0) {

          return "00"

          }

          if(color > 255) {

          return "FF"

          }

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

          }

          //-->
          </script>

          Bitte guck es dir mal an!

          Wenn es dir nicht zusagt, mach mich bitte auf Fehler aufmerksam!

          MfG Dietttz :-)

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

            1. Nein, habe leider keine eMail!

              Also, ähh... das war der ganze Quellcode.

              Ich hab auch erst heute morgen damit begonnen...

              Mhh, wäre nett, wenn du mir helfen würdest. Natürlich nur wenn du Lust/Zeit hast.

              Also, wie ich annehme, verstehst du was ich erreichen will.

              Ein FADE-Effekt.

              Im Link stehen also die Farben (ich hätte die Farben auch als Variablen im Code speichern können, aber fast jeder Link wird einen anderen Übergangsfarbwert und andere Übergangsschritte erhalten).

              Was auch eine schöne Funktion wäre, wenn man mit der Maus die ersten zB. 2 Sek. auf dem Link ist sich nur die Farbe ändert und dann der eigentliche Effekt zustande kommt. Müsste irgendwas mit setTimeout sein oder? Und der Effekt sollte nicht nur einmal von Schwarz nach Weiß gehen, sondern solange wie man auf dem Link ist also immer S/W, W/S, S/W usw. Aber wie gesagt, dieser 2 sekündige "Normallink" sollte nur kommen, wenn man den Linkberührt, die S/W Schleife sollte aber erst beim Fade Effekt auftauchen.

              Hoffe, du hast mich einigermaßen verstanden.

              Wäre schön wenn du mir hilfst!

              MfG Dietttz