Eric Falbe: Farbe mit Variablen verändern

Ich will den Hintergrund schrittweise per Klick (bei jedem Funktionsaufruf) verändern.
Meine Idee ist es, Variablen bei jeden Aufruf zu verändern und dann an die Funktion document.bgColor zu übergeben.
Aber irgendetwas stimmt an meinem Programm noch nicht. Muss ich die Konversion anders machen?

var FarbteilR = 10;
  var FarbteilG = 0;
  var FarbteilB = 0;

function HintergrundWechseln1() {
    FarbteilR = FarbteilR + 1;
    alert("Variable FarbteilR " +  FarbteilR);
    document.bgColor = "#" + String.fromCharCode(Farbteil.R) + String.fromCharCode(Farbteil.G) + String.fromCharCode(Farbteil.B);
  }

  1. Hallo Eric,

    Lass dir doch mal den String

    "#" + String.fromCharCode(Farbteil.R) + String.fromCharCode(Farbteil.G) + String.fromCharCode(Farbteil.B)

    anzeigen.

    Grüße
    Andreas

    --
    "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
    (Rich Cook)
    1. Lass dir doch mal den String
      "#" + String.fromCharCode(Farbteil.R) + String.fromCharCode(Farbteil.G) + String.fromCharCode(Farbteil.B)

      anzeigen.

      Ich hatte den falschen Befehl; der hatte einzelne Zeichen von dem ChatCode erzeugt.
      Folgender Befehl macht aus einer Zahl einen String:
      FarbteilR.toString(16)

      Jetzt bleibt noch ein kleines Problem:
      Im String fehlt eine Null bei jedem Farbwert, der unter $10 ist.
      Also wird schwarz als #000 statt #000000 übergeben.

      1. Hallo Eric,

        Im String fehlt eine Null bei jedem Farbwert, der unter $10 ist.
        Also wird schwarz als #000 statt #000000 übergeben.

        einfach eine 0 vorne anhängen, z.B.:

        String R = (Farbteil.R < 10 ? '0' : '') + Farbteil.R.toString(16);

        Grüße
        Andreas

        --
        "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
        (Rich Cook)
        1. String R = (Farbteil.R < 10 ? '0' : '') + Farbteil.R.toString(16);

          Danke für deine Hilfe.
          Kann ich das auch wo nachlesen?
          Hier bei SELFHTML zum Beispiel?

          Mein script sieht jetzt folgendermassen aus:
              document.bgColor = "#" + (Farbteil.R < 10 ? '0' : '') + FarbteilR.toString(16);
              document.bgColor += (Farbteil.G < 10 ? '0' : '') + FarbteilG.toString(16);
              document.bgColor += (Farbteil.B < 10 ? '0' : '') + FarbteilB.toString(16);

          alert("Farbecode: " + document.bgColor);

          Leider funktioniert noch was nicht.
          Es wird nämlich keine 0 hinzugefügt.
          Und der alert funktioniert auch nicht.
          Die Anzeige der Variablen document.bgColor dürfte aber keine Probleme bereiten.

          1. Hallo Eric,

            String R = (Farbteil.R < 10 ? '0' : '') + Farbteil.R.toString(16);
            Danke für deine Hilfe.
            Kann ich das auch wo nachlesen?
            Hier bei SELFHTML zum Beispiel?

            Ja, hier: http://de.selfhtml.org/javascript/sprache/bedingt.htm#entweder_oder.

            document.bgColor = "#" + (Farbteil.R < 10 ? '0' : '') + FarbteilR.toString(16);
                document.bgColor += (Farbteil.G < 10 ? '0' : '') + FarbteilG.toString(16);
                document.bgColor += (Farbteil.B < 10 ? '0' : '') + FarbteilB.toString(16);

            alert("Farbecode: " + document.bgColor);

            Leider funktioniert noch was nicht.

            Vielleicht liegt es ja daran, dass '"#" + (Farbteil.R < 10 ? '0' : '') + FarbteilR.toString(16)' alleine kein gültiger Farbwert ist. Aber da kann ich ohne Fehlermeldung nur raten. Versuch mal, die Zuweisung in _eine_ Anweisung zu packen, oder bau den Farbwert erst mal in einem String zusammen und gib den dann aus, also entweder:

            document.bgColor = "#" + (Farbteil.R < 10 ? '0' : '') + FarbteilR.toString(16) +
              (Farbteil.G < 10 ? '0' : '') + FarbteilG.toString(16) +
              (Farbteil.B < 10 ? '0' : '') + FarbteilB.toString(16);

            oder

            var hilf = "#" + (Farbteil.R < 10 ? '0' : '') + FarbteilR.toString(16);
            hilf += (Farbteil.G < 10 ? '0' : '') + FarbteilG.toString(16);
            hilf += (Farbteil.B < 10 ? '0' : '') + FarbteilB.toString(16);
            alert (hilf);

            Grüße
            Andreas

            --
            "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
            (Rich Cook)
            1. document.bgColor = "#" + (Farbteil.R < 10 ? '0' : '') + FarbteilR.toString(16) +
                (Farbteil.G < 10 ? '0' : '') + FarbteilG.toString(16) +
                (Farbteil.B < 10 ? '0' : '') + FarbteilB.toString(16);

              oder

              var hilf = "#" + (Farbteil.R < 10 ? '0' : '') + FarbteilR.toString(16);
              hilf += (Farbteil.G < 10 ? '0' : '') + FarbteilG.toString(16);
              hilf += (Farbteil.B < 10 ? '0' : '') + FarbteilB.toString(16);
              alert (hilf);

              Hurra! Jetzt funktioniert es!
              Ich habe es in einer Hilfvariablen zwischengespeichert.
              Jetzt kann ich den Wert auch besser anzeigen.
              Außerdem ist in dem Code ein Tippfehler, falls du es noch nicht gemerkt hast.
              Die Variable ist FarbteilB und nicht Farbteil.B.

              1. Hallo Eric,

                Hurra! Jetzt funktioniert es!

                Sehr schön.

                Ich habe es in einer Hilfvariablen zwischengespeichert.
                Jetzt kann ich den Wert auch besser anzeigen.
                Außerdem ist in dem Code ein Tippfehler, falls du es noch nicht gemerkt hast.
                Die Variable ist FarbteilB und nicht Farbteil.B.

                Stimmt, das hatte ich in der Tat übersehen.

                Grüße
                Andreas

                --
                "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
                (Rich Cook)
            2. Hier ist der komplette funktionierende Code, falls es jemanden interessiert:

              <HTML>
              <TITLE>JavaTest</TITLE>
              <BODY>
              <H1>JavaTest</H1><BR>

              <script type="text/javascript">
              <!--
               alert("Hallo Welt! Dies ist Erics Java Testseite");

              var FarbteilR = 1;
                var FarbteilG = 0;
                var FarbteilB = 0;
                var Farbteil = 0;

              function HintergrundAnzeigen() {
                  alert("Farbecode: " + Farbteil);
                }

              function HintergrundWechseln1() {
                  FarbteilR = FarbteilR + 1;
                  Farbteil = "#" + (FarbteilR < 16 ? '0' : '') + FarbteilR.toString(16) + (FarbteilG < 16 ? '0' : '') + FarbteilG.toString(16) + (FarbteilB < 16 ? '0' : '') + FarbteilB.toString(16);
                  document.bgColor = Farbteil;
                }

              function HintergrundWechseln2() {
                  FarbteilG = FarbteilG + 1;
                  Farbteil = "#" + (FarbteilR < 16 ? '0' : '') + FarbteilR.toString(16) + (FarbteilG < 16 ? '0' : '') + FarbteilG.toString(16) + (FarbteilB < 16 ? '0' : '') + FarbteilB.toString(16);
                  document.bgColor = Farbteil;
                }

              function HintergrundWechseln3() {
                  FarbteilB = FarbteilB + 1;
                  Farbteil = "#" + (FarbteilR < 16 ? '0' : '') + FarbteilR.toString(16) + (FarbteilG < 16 ? '0' : '') + FarbteilG.toString(16) + (FarbteilB < 16 ? '0' : '') + FarbteilB.toString(16);
                  document.bgColor = Farbteil;
                }

              //-->
              </script>

              <BR>
              <BR>
              <a href="javascript:HintergrundAnzeigen()"><b>Hintergrundfarbe anzeigen</b></a><br>
              <a href="javascript:HintergrundWechseln1()"><b>Hintergrundfarbe wechseln Rot</b></a><br>
              <a href="javascript:HintergrundWechseln2()"><b>Hintergrundfarbe wechseln Grün</b></a><br>
              <a href="javascript:HintergrundWechseln3()"><b>Hintergrundfarbe wechseln Blau</b></a><br>
              <BR>
              <BR>
              <BR>
              <BR>
              <BR>
              <BR>
              <BR>

              </BODY>
              </HTML>

              P.S. Und jetzt stimmt auch der Themenbereich

              1. Hallo Eric,

                noch zwei kleine Anmerkungen:

                function HintergrundWechseln1() {
                    [...]
                  }

                function HintergrundWechseln2() {
                    [...]
                  }

                function HintergrundWechseln3() {
                    [...]
                  }

                Das kannst Du einfacher mit einer einzigen Funktion lösen, der Du als Parameter übergibst, welcher Farbteil verändert werden soll.

                <BR>
                [...]
                <BR>

                Abstände erzeugt man mit CSS ;-)

                Grüße
                Andreas

                --
                "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
                (Rich Cook)
                1. Das kannst Du einfacher mit einer einzigen Funktion lösen, der Du als Parameter übergibst, welcher Farbteil verändert werden soll.

                  Ja, dann braucht man allerdings noch eine zusätzliche Variable.
                  Ich probier es mal mit einem Parameter.

                  Abstände erzeugt man mit CSS ;-)

                  CSS?
                  Was ist das?
                  Kenne ich noch gar nicht.
                  Wie lang bleibst du noch online?

                  1. Hallo Eric,

                    CSS?
                    Was ist das?
                    Kenne ich noch gar nicht.

                    http://de.selfhtml.org/css/index.htm

                    Wie lang bleibst du noch online?

                    Nicht mehr lange. Ich schaue aber spätestens morgen wieder rein.

                    Grüße
                    Andreas

                    --
                    "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
                    (Rich Cook)
                    1. So dass mit der Parametervariablen und dem Array habe ich jetzt auch hingekriegt.

                      <HTML>
                      <TITLE>JavaTest</TITLE>
                      <BODY>
                      <H1>JavaTest</H1><BR>

                      <script type="text/javascript">
                      <!--
                       alert("Hallo Welt! Dies ist Erics Java Testseite");

                      Farbteile = new Array(12,0,0);
                        var Farbteil = 0;

                      function HintergrundAnzeigen() {
                          alert("Farbecode: " + Farbteil);
                        }

                      function HintergrundWechseln1(Farbe) {
                          Farbteile[Farbe] += 1;
                          Farbteil = "#" + (Farbteile[0] < 16 ? '0' : '') + Farbteile[0].toString(16) + (Farbteile[1] < 16 ? '0' : '') + Farbteile[1].toString(16) + (Farbteile[2] < 16 ? '0' : '') + Farbteile[2].toString(16);
                          document.bgColor = Farbteil;
                        }

                      //-->
                      </script>

                      <BR>
                      <BR>
                      <a href="javascript:HintergrundAnzeigen()"><b>Hintergrundfarbe anzeigen</b></a><br>
                      <a href="javascript:HintergrundWechseln1(0)"><b>Hintergrundfarbe wechseln Rot</b></a><br>
                      <a href="javascript:HintergrundWechseln1(1)"><b>Hintergrundfarbe wechseln Grün</b></a><br>
                      <a href="javascript:HintergrundWechseln1(2)"><b>Hintergrundfarbe wechseln Blau</b></a><br>
                      <BR>

                      </BODY>
                      </HTML>

  2. hi,

    Ich will den Hintergrund schrittweise per Klick (bei jedem Funktionsaufruf) verändern.

    und das willst du offenbar mit javascript machen, nicht mit java.

    Aber irgendetwas stimmt an meinem Programm noch nicht. Muss ich die Konversion anders machen?

    ja, vermutlich.

    document.bgColor = "#" + String.fromCharCode(Farbteil.R) + String.fromCharCode(Farbteil.G) + String.fromCharCode(Farbteil.B);

    ich würde vorschlagen, du schaust dir die beschreibung und das beispiel zu fromCharCOde() noch mal an, und überlegst, ob das so wirklich das macht, was du willst.

    und ein paar debug-ausgaben, falls du nicht wissen solltest, was du da eigentlich produzierst, wären sicher auch nett.

    gruß,
    wahsaga

    --
    "Look, that's why there's rules, understand? So that you _think_ before you break 'em."
    1. und das willst du offenbar mit javascript machen, nicht mit java.

      Stimmt, kleiner Fehler von mir. Obwohl Java ja ein Überbegriff ist.
      Meinen Fehler habe ich mitlerweile korrigiert --> siehe andere Antwort.

      1. Hallo,

        Stimmt, kleiner Fehler von mir. Obwohl Java ja ein Überbegriff ist.

        Nein, ist es nicht, war es nie, und wird es nie sein.

        Java hat mit JavaScript genau gar nichts zu tun! Es ist kein Überbegriff.
        Es ist eine eigene Programmiersprache.

        Gruß
        Slyh

        1. Java hat mit JavaScript genau gar nichts zu tun! Es ist kein Überbegriff.
          Es ist eine eigene Programmiersprache.

          Wieso heißt es dann genauso?
          Javascript ist so wie ich das überblicke eine Vereinfachung von der ursprünglichen Sprache Java.

          1. Hallo,

            Es ist eine eigene Programmiersprache.
            Wieso heißt es dann genauso?

            es heißt doch gar nicht genauso. Franz heißt ja schließlich auch nicht genauso wie Franziska. Ohne differenziertes Lesen wird Dir das Programmieren nie gelingen.

            Gruß, Andreas

            --
            SELFFORUM - hier werden Sie geholfen,
            auch in Fragen zu richtiges Deutsch
            1. es heißt doch gar nicht genauso. Franz heißt ja schließlich auch nicht genauso wie Franziska. Ohne differenziertes Lesen wird Dir das Programmieren nie gelingen.

              Naja aber Franz und Franziska sind sich jedenfalls sehr sehr ähnlich jedenfalls ähnlicher als Franziska und Andreas z.B. und ähnliche Dinge heissen auch ähnlich. Dass Assembler sich von Java unterscheidet kann man alleine am Namen erkennen.
              Die Ähnlichkeit von Java und Javascript auch.
              Ich schau mal, ob ich genauere Informationen darüber finde.
              Aber vielleicht weiss ja ein Leser des Forums genaueres?

              1. Naja aber Franz und Franziska sind sich jedenfalls sehr sehr ähnlich...

                die beiden werden sich bedanken über Deine Meinung. Zieh' ihnen mal die Hosen aus...

                Aber vielleicht weiss ja ein Leser des Forums genaueres?

                diese Frage taucht sehr häufig auf. Mit beiden Begriffen zusammen wirst Du im Archiv wahrscheinlich viel finden.

                Gruß, Andreas

                --
                SELFFORUM - hier werden Sie geholfen,
                auch in Fragen zu richtiges Deutsch
          2. Hallo,

            Java hat mit JavaScript genau gar nichts zu tun! Es ist kein Überbegriff.
            Es ist eine eigene Programmiersprache.

            Wieso heißt es dann genauso?

            Um arme Newbies zu verwirren?

            Nein, eigentlich aus Marketinggründen. Siehe auch Wikipedia.

            Im übrigen solltest du nochmal über die Bedeutung des Wortes
            "genauso" reflektieren.

            Javascript ist so wie ich das überblicke eine Vereinfachung von der ursprünglichen Sprache Java.

            Nein. Beide Sprachen haben zwar Ähnlichkeiten, aber dafür auch ganz
            erhebliche Unterschiede.

            Gruß
            Slyh

            1. Um arme Newbies zu verwirren?

              haha  :-) Bist heute gut drauf, was?

              Nein, eigentlich aus Marketinggründen. Siehe auch Wikipedia.

              Viel steht über die Marketinggründe ja nicht drin. Müsste man wohl aber irgendwie mehr darüber finden können.

              Im übrigen solltest du nochmal über die Bedeutung des Wortes
              "genauso" reflektieren.

              Naja zumindest das "Java" in beiden Namen ist sehr gleich, oder?  ;-)

              Nein. Beide Sprachen haben zwar Ähnlichkeiten, aber dafür auch ganz
              erhebliche Unterschiede.

              Naja der Unterschied von Klassen und Objekten ist nicht so arg gravierend. Oder worin siehst du den Unterschied?

              1. Hallo Eric,

                Naja der Unterschied von Klassen und Objekten ist nicht so arg gravierend. Oder worin siehst du den Unterschied?

                Ich denke, Du möchtest mal http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html mit http://de.selfhtml.org/javascript/index.htm vergleichen ;-)

                Grüße
                Andreas

                --
                "Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning."
                (Rich Cook)
                1. Ich denke, Du möchtest mal http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html mit http://de.selfhtml.org/javascript/index.htm vergleichen ;-)

                  Also gut ich trete von dem, das es "genau da gleiche" ist zurück. Es war ja eigentlich auch nicht so gemeint. Jeder, der es gelesen hat, konnte verstehen, was gemeint ist. Aber die zwei Sprachen Java und Javascript sind sich sehr ähnlich; jedenfalls ähnlicher als alle anderen Sprachen miteinander verglichen; egal mit wie. Leider gibt es bei SELFHTML ja leider nichts direkt über Java. Aber vielleicht wird sich das in Zukunft ändern?