Bonsai: was heißt %?

Ich habe bei SELF-HTML eine Seite gefunden auf der die Hintergrundfarbe langsam von schwarz nach weiß wechselt.
Ich hab den Quelltext eigentlich ganz gut verstanden aber eine if-Abfrage versteh ich nicht :

if (x2 % 16 == 0) { <-- was heisst x2 % 16??
    x2 = 0;
    x1 = x1 + 1;
  }

Hab mir die Opreatoren nochmal angeguckt und es ausprobiert rauszufinden aber ich checks einfach nicht..

MfG Bonsai

  1. Moin

    der Rest beim Teilen

    7 geteilt durch 3 ist 2 Rest 1
    also
    7%3=1

    weiteres: SelfHTML

    Gruß
    rfb

    --
    Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
    (Galileo Galilei)
  2. Hallo,

    if (x2 % 16 == 0) { <-- was heisst x2 % 16??

    modulo.

    Wenn der erste Operand geteilt durch zweiten keinen Rest ergibt, dann...

    Grüsse
    Cyx23

    1. Warum schreibt man nicht stattdessen einfach :

      if ( x2 == 16 ) {
      ...
      }

      x2 ist immer nur zwischen 0 und 15, also müsste auch das gleiche dabei rauskommen oder?ß

      MfG Bonsai

      1. Moin

        x2 ist immer nur zwischen 0 und 15, also müsste auch das gleiche dabei rauskommen oder?

        Ich habe natürlich keine Ahnung was für Werte dein x2 annehmen kann ohne den ganzen Quellcode zu sehen - aber zB 32%16 ergibt auch 0.

        Gruß
        rfb

        --
        Man kann einen Menschen nichts lehren, man kann ihm nur helfen, es selbst zu entdecken.
        (Galileo Galilei)
        1. Ohh tut mir leid
          der Quelltex:
          var X = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
          var x1 = 0, x2 = 0;
          var i = 0;
          function setColor () {
            document.bgColor = "#" + X[x1] + X[x2] + X[x1] + X[x2] + X[x1] + X[x2];
            x2 = x2 + 1;
            if (x2 % 16 == 0) {
              x2 = 0;
              x1 = x1 + 1;
            }
            i++;
            if (i < 256)
              window.setTimeout("setColor()", 10);
          }

          also ich denke man kann auch einfach x2 == 16 schreiben oder?ß

          MfG Bonsai

          1. Hallo,

            also ich denke man kann auch einfach x2 == 16 schreiben oder?ß

            sieht allerdings so aus, und irgendeine Form von Browserweiche scheint
            es auch nicht zu sein.

            Grüsse
            Cyx23

            1. Tja ist ja egal

              wenigstens hab ich es verstanden^^

              Danke an euch beide

              MfG Bonsai

              1. Hallo,

                Tja ist ja egal

                über Farbangaben per rgb ginge es vielleicht auch, und dann gibt es
                wohl auch Möglichkeiten die Farbformate zu konvertieren.

                Aber so hatte ich etwas ähnliches mal um 1998 geschrieben:

                var tim=20;  
                       bgcol=new Array('00','33','66','99','cc','ff');  
                function setbg(nr){ if(document.body){  
                document.body.bgColor="#"+bgcol[nr]+bgcol[nr]+bgcol[nr];}  
                else{document.bgColor="#"+bgcol[nr]+bgcol[nr]+bgcol[nr];}}  
                  
                function callfbg(){num=0;fadec=window.setInterval("fadebg();",tim);}  
                  
                function fadebg(){setbg(num);num++;if(num>=6)window.clearInterval(fadec);}  
                 window.onload=function(){ callfbg(); }  
                
                

                Grüsse
                Cyx23

          2. Hallo Bonsai,

            var X = new Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F");
            var x1 = 0, x2 = 0;
            var i = 0;
            function setColor () {
              document.bgColor = "#" + X[x1] + X[x2] + X[x1] + X[x2] + X[x1] + X[x2];
              x2 = x2 + 1;
              if (x2 % 16 == 0) {
                x2 = 0;
                x1 = x1 + 1;
              }
              i++;
              if (i < 256)
                window.setTimeout("setColor()", 10);
            }

            also ich denke man kann auch einfach x2 == 16 schreiben oder?ß

            Für dein Vorhaben der Umwandlung einer Dezimal- in eine Hexadezimalzahl könnte man auch einfach die Methode toString(16) nehmen.

            Gruß Gernot

      2. Tach,

        Warum schreibt man nicht stattdessen einfach :

        if ( x2 == 16 ) {
        ...
        }

        weil es vermutlich ein Programmierer geschrieben hat, der das Problem einmal gelöst hat und dann immer wieder den selben Code für diese Art Problem verwendet.

        mfg
        Woodfighter

  3. Hallo Bonsai(Baum?)

    ganz einfach. Der rest wird ermittelt der durch eine teilung übrig bleibt. 4%2 Rest 0 5/2 Rest 1.