Chris: Verwendung des rand() befehls in JS

0 50

Verwendung des rand() befehls in JS

Chris
  • javascript
  1. 0
    Beat
    1. 0
      Gunnar Bittersmann
      1. 0
        Chris
        1. 0
          Gunnar Bittersmann
          1. 0
            Chris
            1. 0
              Gunnar Bittersmann
  2. 0
    fastix®
    1. 0
      Chris
      1. 0
        JürgenB
  3. 0
    Gunnar Bittersmann
    1. 0
      apsel
      • menschelei
  4. 0
    MudGuard
    1. 0
      Der Martin
      1. 0
        Gunnar Bittersmann
    2. 0
      Chris
      1. 0
        Kai345
      2. 0
        Gunnar Bittersmann
  5. 0
    Gunnar Bittersmann
    1. 0
      Chris
      1. 0
        Gunnar Bittersmann
        1. 0
          Chris
          1. 0
            Gunnar Bittersmann
            1. 0
              Chris
              1. 0
                Gunnar Bittersmann
  6. 0
    Chris
    1. 0
      Der Martin
      1. 0
        Chris
        1. 0
          Gunnar Bittersmann
          1. 0
            Chris
            1. 0
              Gunnar Bittersmann
              1. 0
                Chris
                1. 0
                  Gunnar Bittersmann
                  1. 0
                    Chris
                    1. 0
                      Chris
                    2. 0
                      JürgenB
                    3. 0
                      Gunnar Bittersmann
                      1. 0
                        Chris
                        1. 0
                          Gunnar Bittersmann
                          1. 0
                            MudGuard
                            1. 0
                              Gunnar Bittersmann
                              • menschelei
                              1. 0
                                MudGuard
                                1. 0
                                  Gunnar Bittersmann
                                  1. 0
                                    MudGuard
                        2. 0
                          Gunnar Bittersmann
                          1. 0
                            Chris
                          2. 0
                            Der Martin
                            1. 0
                              Gunnar Bittersmann
    2. 0
      Gunnar Bittersmann
  7. 0
    ChrisB

Hallo,
ich habe da eine kleine Frage zum rand() befehl in JS:

  
for(var i = 0; i < 4+lvl-1; i++)  
				{  
				  Zahlen[i] = parseInt( rand(25) + 1);  
				  
				    if(document.getElementById("T+String(Zahlen[i])").style.backgroundColor="yellow")  
					{  
					  continue;  
					}  
				  
					else  
					{  
					document.getElementById("T+String(Zahlen[i])").style.backgroundColor="yellow";  
					}  
				}  

Folgendes soll passieren:
Es soll eine zufällige Zahl zwischen 1 und 25 generieren.
Die Zahl soll in der if bedingung zu T+"zufällige Zahl als string" werden woraufhin überprüft werden soll ob die Hintergrundfarbe des betreffenden Objekts schon gelb ist.
Wenn nicht dann soll diese gelb gefärbt werden.
Wenn ich diese Funktion jetzt durch Firebugs untersuchen lasse sagt er mir: int is not defined
rand() is not defined
Zahlen[i] = int(rand(25) + 1);

Ich bin dankbar um jeden Tipp, da ich erst gestern mit JS angefangen habe.

  1. Ich bin dankbar um jeden Tipp, da ich erst gestern mit JS angefangen habe.

    alert(Math.random(1));

    random ist eine Methode des Math Objects.

    Dieses Object stellt dir auch die weiteren Methoden floor() und ceil() zur Verfügung.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. @@Beat:

      nuqneH

      Dieses Object stellt dir auch die weiteren Methoden floor() und ceil() zur Verfügung.

      Wobei letztere zwar zum ceil, hier aber nicht zum Ziel führt.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
      1. Ok nochmals danke,
        nochmal zu rand()
        ich bin ausversehn in die falsche Sparte gekommen und hab bei perl geguckt(schande über mein Haupt).
        Jetzt nochmal eine Frage:
        ist es bei Javascript nicht so, dass wenn man bei einer Variable (in meinem Fall "Zahlen") ein []dahinter setzt bei jedem schleifendurchlauf eine neue Zahl generiert wird?

          
        for(var i = 0; i < 4+lvl-1; i++)  
        {  
           Zahlen[i] = Math.floor( Math.random()*25) + 1;  
        .  
        .  
        .  
        }  
        
        

        @@Beat:

        nuqneH

        Dieses Object stellt dir auch die weiteren Methoden floor() und ceil() zur Verfügung.

        Wobei letztere zwar zum ceil, hier aber nicht zum Ziel führt.

        Qapla'

        1. @@Chris:

          nuqneH

          (schande über mein Haupt).

          Heißt das nicht „Asche auf mein Haupt“?

          for(var i = 0; i < 4+lvl-1; i++)
          {
             Zahlen[i] = Math.floor( Math.random()*25) + 1;

          Du solltest nicht jeden Fehler kopieren. (Asche auf mein Haupt.)

          Und dein Posting nicht irgendwo plazieren, sondern als Antwort zu dem Posting, auf das du dich beziehst.

          Und sinnvoll zitieren, nicht alles.

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
          1. @@Chris:

            nuqneH

            »»(schande über mein Haupt).

            »»Heißt das nicht „Asche auf mein Haupt“?

            Sry aber ich kenn nur Schande.

            Und dein Posting nicht irgendwo plazieren, sondern als Antwort zu dem Posting, auf das du dich beziehst.

            »»

            Mache ich eig.... Das letzte passte nur nirgendwo zu.

            Und sinnvoll zitieren, nicht alles.

            Über sinnvolles Zitieren kann man lange diskutieren. Des Weiteren war das Zitat jetzt nicht so lang das sich eine Kürzung gelohnt hätte.

            Und nun zurück zum Thema:

              
            ...  
            var Verweis = "T"+String(Zahlen)  
              
            if(document.getElementById("Verweis").style.backgroundColor="yellow")  
            ...  
            
            

            Kann man nicht eine Variable in getElementById einfügen, denn wie gesagt es soll ein String gebastelt werden, der einer ObjektID entspricht, sodass auf diese zugegriffen werden kann.

            Viele Grüße,
            Chris

            1. @@Chris:

              nuqneH

              Über sinnvolles Zitieren kann man lange diskutieren.

              Dass TOFU kein sinnvolles Zitieren ist, darüber wird hier nicht lange diskutiert.

              Des Weiteren war das Zitat jetzt nicht so lang das sich eine Kürzung gelohnt hätte.

              Du hast dich nicht einmal auf das Zitat (geschweige denn überhaupt auf das Posting) bezogen.

              Und nun zurück zum Thema:
              ...
              var Verweis = "T"+String(Zahlen)

              Und schon wieder nicht.

              Nochmal: Du solltest dein Posting nicht irgendwo plazieren, sondern als Antwort zu dem Posting, auf das du dich beziehst.

              Sonst hat niemand mehr die Übersicht, welchen Hinweisen du nachgegangen bist. Sinnvolles Antworten fällt dann schwer.

              Qapla'

              --
              Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
              (Mark Twain)
  2. Moin!

    Wenn ich diese Funktion jetzt durch Firebugs untersuchen lasse sagt er mir: int is not defined
    rand() is not defined
    Zahlen[i] = int(rand(25) + 1);

    Zahlen[i] = parseInt(Math.random()*25 + 1);

    Aber wahrscheinlich wolltest Du vielmehr:

    Zahlen[i] = Math.floor(Math.random()*25 + 1);

    Guckst Du auch hier: <http://de.selfhtml.org/javascript/objekte/math.htm@title=Objekt Math>

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix

    1. Erstmal vielen dank für die schnelle hilfe, allerdings hab ich jetzt genau das gleiche Problem, da er mir sagt jetzt sei Zahlen[i] undefined obwohl 2 Zeile darüber "var Zahlen;" steht.

      Moin!

      Wenn ich diese Funktion jetzt durch Firebugs untersuchen lasse sagt er mir: int is not defined
      rand() is not defined
      Zahlen[i] = int(rand(25) + 1);

      Zahlen[i] = parseInt(Math.random()*25 + 1);

      Aber wahrscheinlich wolltest Du vielmehr:

      Zahlen[i] = Math.floor(Math.random()*25 + 1);

      Guckst Du auch hier: <http://de.selfhtml.org/javascript/objekte/math.htm@title=Objekt Math>

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix

      1. Hallo Chris,

        neben den restlichen Basics solltest du dir mal http://de.selfhtml.org/javascript/objekte/array.htm ansehen. Beachte, dass Arrayelemente von 0 bis (n-1) gezählt werden.

        Gruß, Jürgen

  3. @@Chris:

    nuqneH

    Wenn ich diese Funktion jetzt durch Firebugs untersuchen lasse sagt er mir: int is not defined

    ?? Wo kommt 'int' her?

    rand() is not defined

    Richtig. Es gibt in JavaScript keine <http://de.selfhtml.org/javascript/objekte/unabhaengig.htm@title=objektunabhängige Funktion> rand().

    Das http://de.selfhtml.org/javascript/objekte/math.htm@title=Math-Objekt bietet eine solche Methode, die heißt allerdings http://de.selfhtml.org/javascript/objekte/math.htm#random@title=random()

    Zahlen[i] = parseInt( rand(25) + 1);

    … und erwartet keinen Parameter, sondern liefert einen Wert aus dem Intervall [0, 1[.

    Du möchtest eine Ganzzahl aus [1, 26]?

    Dann musst du die Zufallszahl aus [0, 1[ mit 26 multiplizieren, das Produkt liegt in [0, 26[. Davon nimmst du den <http://de.selfhtml.org/javascript/objekte/math.htm#floor@title=ganzzahligen Anteil>, der ist in [0, 25]. 1 dazuaddiert ergibt eine Zufallszahl aus [1, 26].

    Zahlen[i] = Math.floor(Math.random() * 25) + 1;

    Qapla'

    PS: [a, b[ ist das halboffene Intervall   a ≤ x < b
        [a, b] ist das geschlossene Intervall a ≤ x ≤ b

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Om nah hoo pez nyeetz, Gunnar Bittersmann!

      1 dazuaddiert

      Matthias

      --
      http://www.billiger-im-urlaub.de/kreis_sw.gif
  4. Hi,

    Zahlen[i] = parseInt( rand(25) + 1);

    Math.rand wurde ja schon erwähnt.

    if(document.getElementById("T+String(Zahlen[i])").style.backgroundColor="yellow")

    Ein Element mit id="T+String(Zahlen[i])" gibt es nicht - Klammern und + dürfen in id-Werten nicht vorkommen.
    Informiere Dich, wie Du mehrere Werte zu einem String zusammenbauen kannst.

    Würde das Element mit der id existieren:
    Die Zuweisung von "yellow" ergibt den zugewiesenen Wert (also "yellow"), der zu true evaluiert wird, also wird immer

      			  continue;  
    

    ausgewählt, niemals

    document.getElementById("T+String(Zahlen[i])").style.backgroundColor="yellow";

    Im if willst Du vermutlich den Vergleichsoperator == statt des Zuweisungsoperators = verwenden.

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Hallo,

      Im if willst Du vermutlich den Vergleichsoperator == statt des Zuweisungsoperators = verwenden.

      und selbst dann ist der Erfolg fraglich, denn ob die Browser den einmal gesetzten Farbwert als "yellow", als "#FFFF00", als "#FF0", oder als "rgb(255, 255, 0)" zurückgeben, bleibt ihnen überlassen.

      Ciao,
       Martin

      --
      Man sollte immer wissen was man sagt
       - aber auf keinen Fall alles sagen, was man weiß.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. @@Der Martin:

        nuqneH

        und selbst dann ist der Erfolg fraglich, denn ob die Browser den einmal gesetzten Farbwert als "yellow", als "#FFFF00", als "#FF0", oder als "rgb(255, 255, 0)" zurückgeben, bleibt ihnen überlassen.

        Das Problem tritt gar nicht auf, wenn man es richtig macht: per JavaScript keine Stile setzen/abfragen, sondern Klassenzugehörigkeiten setzen/abfragen. Die Formatierung der Klasse (die _nicht_ "yellow" heißen sollte!) steht im Stylesheet.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
    2. Informiere Dich, wie Du mehrere Werte zu einem String zusammenbauen kannst.

      schon passiert

        
      var Verweis = "T"+Zahlen;  
      					  
      				  
      				    if(document.getElementById("Verweis").innerHTML.style.backgroundColor.yellow== true)  
      {  
      continue;  
      }  
      				  
      else  
      {  
      					document.getElementById("Verweis").style.backgroundColor="yellow";  
      }  
      
      

      Ist continue dort falsch? Es soll eig. bezwecken, dass er einfach weiter macht mit else.

      1. [latex]Mae  govannen![/latex]

        var Verweis = "T"+Zahlen;

        Du belegst eine Variable mit der Zeichenkette bestehend aus »T« und dem Inhalt der Variable »Zahlen«

        if(document.getElementById("Verweis").innerHTML.style.backgroundColor.yellow== true)

        ... aber verwendest sie hier *nicht*, sondern suchst nach einem Element, daß die id »Verweis« trägt.

        Du willst aber ein Element, das die ID trägt, die in der Variable »Verweis« abgelegt ist. Ergo: Setze die Variable ein statt der Zeichenkette.

        Auf die Zuweisung statt Vergleich wurde bereits hingewiesen.

        Cü,

        Kai

        --
        Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken in Richtung "Mess up the Web". (suit)
        Foren-Stylesheet Site Selfzeug JS-Lookup
        SelfCode: sh:( fo:| ch:? rl:( br:< n4:( ie:{ mo:| va:) js:| de:> zu:) fl:( ss:| ls:?
      2. @@Chris:

        nuqneH

        if(document.getElementById("Verweis").innerHTML.style.backgroundColor.yellow== true)

        Das wird nichts.

        Nicht document.getElementById("Verweis").innerHTML hat ein style-Unterobjekt, sondern das Elementobjekt document.getElementById("Verweis").

        style.backgroundColor könnte evtl. den Wert "yellow" haben (vermutlich aber nicht), aber kein Unterobjekt style.backgroundColor.yellow.

        Gegen true zu vergleichen ist auch kaum sinnvoll.

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
  5. @@Chris:

    nuqneH

    woraufhin überprüft werden soll ob die Hintergrundfarbe des betreffenden Objekts schon gelb ist.

    Der Vergleich dürfte nicht erforderlich sein.

    Wenn nicht dann soll diese gelb gefärbt werden.

    Warum färbst du nicht ohne vorige Prüfung einfach gelb? Wenn’s vorher schon gelb war, ändert sich doch nichts.

    Einen Wert auszulesen dürfte so ziemlich genauso aufwändig sein wie einen Wert zu setzen. Du sparst die Vergleichsoperation, damit Rechenzeit, Prozessorleistung, Energie, CO₂-Emission und du rettest die Welt.

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Warum färbst du nicht ohne vorige Prüfung einfach gelb? Wenn’s vorher schon gelb war, ändert sich doch nichts.

      Weil in jedem Fall 4 felder gelb gefärbt werden müssen, bei random aber 2 mal der gleiche wert rauskommen kann

      1. @@Chris:

        nuqneH

        Weil in jedem Fall 4 felder gelb gefärbt werden müssen

        Warum steht das nicht in deiner ursprünglichen Problembeschreibung?

        bei random aber 2 mal der gleiche wert rauskommen kann

        Was gedachtest du, dann zu tun?

        Qapla'

        --
        Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
        (Mark Twain)
        1. @ Qapla'
          »»Warum steht das nicht in deiner ursprünglichen Problembeschreibung?
          Weil mir erst hinterher aufgefallen ist, dass manchmal die gleichen zahlen rauskommen und ich vorher nicht drüber nachgedacht hab.

          Was gedachtest du, dann zu tun?

          Du meinst du Verwendung? Für ein kleines Gedächnis"Spielchen".

          1. @@Chris:

            nuqneH

            Was gedachtest du, dann zu tun?
            Du meinst du Verwendung?

            Nein. Ich meinte: Was gedachtest zu tun, wenn eine Zufallszahl wiederholt gezogen wird?

            Qapla'

            --
            Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
            (Mark Twain)
            1. @@Qapla'

              Nein. Ich meinte: Was gedachtest zu tun, wenn eine Zufallszahl wiederholt gezogen wird?

              ignorieren, deshalb in der if anweisung das continue;

              1. @@Chris:

                nuqneH

                Nein. Ich meinte: Was gedachtest zu tun, wenn eine Zufallszahl wiederholt gezogen wird?

                ignorieren, deshalb in der if anweisung das continue;

                Nö. Wie http://de.selfhtml.org/javascript/sprache/schleifen.htm#break_continue@title=SELFHTML sagt: „Mit continue erzwingen Sie sofort den nächsten Schleifendurchlauf. Nachfolgende Anweisungen innerhalb der Schleife werden bei diesem Schleifendurchlauf nicht mehr ausgeführt.“

                Bei dir gibt es keine nachfolgenden Anweisungen innerhalb der Schleife. (Vom else-Zweig abgesehen. Da wird aber sowieso nicht reingegangen, wenn die Bedingung erfüllt ist (also das continue ausgeführt wird).

                Das continue bewirkt also gar nichts. Es folgt einfach der nächste Schleifendurchlauf, der auch ohne das continue genauso kommen würde.

                Deine Schleife wird viermal durchlaufen, egal ob eine Zufallszahl mehrfach gezogen wird oder nicht. In dem Fall werden weniger als 4 Felder gelb gefärbt. Willst du das so?

                Qapla'

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)
  6. Vielen Dank an alle die mir so schnelle Hilfe geboten haben. Das läuft jetzt soweit.
    nur leider funktioniert array nicht ganz so gut, fügt pro durchlauf ein Komma hinzu das nur scher zu entfernen ist, das ist aber ein anderes Thema.

    Habs dank euer hilfe wie folgt gelöst:

      
    for(var i = 0; i < 4+lvl-1; i++)  
    				{  
    				  var Zahlen= new Array(1);  
    				  
    				  Zahlen[i] = Math.floor(Math.random()*25) + 1;  
    				   Zahlen=Zahlen()  
    				  var Verweis = "T"+Zahlen;  
    					Zahlen=""  
    				  
    				    if(document.getElementById(Verweis).style.backgroundColor.yellow== true)  
    					{  
    					  continue;  
    					}  
    				  
    					else  
    					{  
    					document.getElementById(Verweis).style.backgroundColor="yellow";  
    					}  
    				}  
    
    

    und sry das ich keine stylesheets verwendie die kommen bei mir erst ganz zum schluss hauptsache sollte erstmal sein das es läuft.^^

    1. Hallo,

      Vielen Dank an alle die mir so schnelle Hilfe geboten haben. Das läuft jetzt soweit.

      faszinierend - das bedeutet, dass ein großer Teil deines Codes offenbar überflüssig ist.

      var Zahlen= new Array(1);
         Zahlen=Zahlen()

      Was ist das? Erst erzeugst du ein neues Array, dann weist du ihm das Ergebnis seines Konstruktor-Aufrufs zu, ...

      var Verweis = "T"+Zahlen;
         Zahlen=""

      ... und schließlich einen leeren String.

      if(document.getElementById(Verweis).style.backgroundColor.yellow== true)

      Warum das Unfug ist, hat MudGuard dir doch schon recht gut erklärt.

      So long,
       Martin

      --
      Realität ist eine Illusion, die durch Unterversorgung des Körpers mit Alkohol entstehen kann.
      Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      1. @ Martin

        faszinierend - das bedeutet, dass ein großer Teil deines Codes offenbar überflüssig ist.

        warum das?

           var Zahlen= new Array(1);  
           Zahlen=Zahlen()  
        

        Was ist das? Erst erzeugst du ein neues Array, dann weist du ihm das Ergebnis seines Konstruktor-Aufrufs zu, ...

        vor der Zweiten zeile sind eig. "//"

           var Verweis = "T"+Zahlen;  
           Zahlen=""  
        

        ... und schließlich einen leeren String.

        weil ich die variable Zahl zurücksetzten will was noch nicht klappt wie ich schon beschrieben habe.

        if(document.getElementById(Verweis).style.backgroundColor.yellow== true)

        warum das funktioniert hängt damit zusammen das das programm mit einem browser geöffnet wird und der browser gelb immer gleich interpretiert

        @Qapla'

        »»Das glaube ich nicht.

        schön ich weiß es aber...

        »»Das ist Unsinn. Schon deshalb, weil doppelte Arbeit.

        schön das bei dir die sachen gut aussehn dieses wiederum interressiert mich aber nicht.
        doppelte arbeit ist es für 3 klicks und 3 Tastenkombinationen pro klasse im ganzen dokument.

        Trotzdem danke euch beiden und ich möchte nochmals drauf hinweisen, dass ich mich grad durch Javascript durcharbeite und deshalb noch nicht alle unterstützten funktionen kenne.

        1. @@Chris:

          nuqneH

          if(document.getElementById(Verweis).style.backgroundColor.yellow== true)

          warum das funktioniert hängt damit zusammen das das programm mit einem browser geöffnet wird und der browser gelb immer gleich interpretiert

          Das ist Unsinn.

          Warum das nicht funktioniert, hatte ich die gesagt.

          @Qapla'

          Es sei Euch gestattet, mich mit „Gunnar“ anzureden.

          Und wie oft denn noch? Du solltest deine Antworten nicht irgendwo plazieren!

          Wenn du alle Hinweise missachtest, verliert man hier die Lust, dir weiterhin welche zu geben.

          »»Das glaube ich nicht.
          schön ich weiß es aber...

          Das glaube ich nicht.

          doppelte arbeit ist es für 3 klicks und 3 Tastenkombinationen pro klasse im ganzen dokument.

          Ich verstehe nicht, was du meinst.

          Ich bin auch nicht sicher, ob du verstehst, was ich meine.

          Qapla'

          --
          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
          (Mark Twain)
          1. @ Gunnar

            if(document.getElementById(Verweis).style.backgroundColor.yellow== true)
            Das ist Unsinn.

            Warum das nicht funktioniert, hatte ich die gesagt.

            Naja laufen tuts trotzdem

            @Qapla'

            Es sei Euch gestattet, mich mit „Gunnar“ anzureden.

            Und wie oft denn noch? Du solltest deine Antworten nicht irgendwo plazieren!

            Wenn du alle Hinweise missachtest, verliert man hier die Lust, dir weiterhin welche zu geben.

            ich klicke doch oben schön auf "Nachricht beantworten" wo soll ichs denn sonst hinmachen?

            doppelte arbeit ist es für 3 klicks und 3 Tastenkombinationen pro klasse im ganzen dokument.

            Ich verstehe nicht, was du meinst.

            Strg+F->Ersetzen Einfügen was weg soll(hier die verschiedenen Styles die ich schon gesetzt hab)-- Einfügen was hin soll(hier klasse)

            Ich bin auch nicht sicher, ob du verstehst, was ich meine.

            du meinst das ich "style=....." löschen muss und dafür was neues einsetzen muss, wenn ich mich irre tuts mir leid.

            Im endeffect hast du natürlich recht das es doppelte arbeit ist. trotzdem muss ich sowieso noch einige veränderungen vornehmen. z.b. soll es nicht die bgcolor sein die sich ändert sondern es muss ein bild dahin.

            außerdem muss ich auch noch ne alternative für die arrays finden, da ich beim jeweils 2. durchlauf das "," nicht wegbekomme.

            und dann kommt erst das hauptprojekt d.h. dieses dient erstmal der einarbeitung in js und zum Verständniss einiger funktionen.

            sollte ich dir in einer weise unrecht getan haben tut es mit leid.

            1. @@Chris:

              nuqneH

              Warum das nicht funktioniert, hatte ich die gesagt.
              Naja laufen tuts trotzdem

              Aber nicht so, wie du es gern hättest.

              ich klicke doch oben schön auf "Nachricht beantworten" wo soll ichs denn sonst hinmachen?

              Die Antwort auf mein Posting nicht mit der Antwort auf Martins Posting vermengen, sondern besser getrennt antworten.

              trotzdem muss ich sowieso noch einige veränderungen vornehmen. z.b. soll es nicht die bgcolor sein die sich ändert sondern es muss ein bild dahin.

              Also später die Darstellung ändern. Wenn du gleich dein Script richtig schreibst, also die Darstellung gar nicht erst im Script angibst, musst du später am Script nichts mehr ändern, sondern nur im Stylesheet.

              außerdem muss ich auch noch ne alternative für die arrays finden, da ich beim jeweils 2. durchlauf das "," nicht wegbekomme.

              ?? Was meinst du damit?

              sollte ich dir in einer weise unrecht getan haben tut es mit leid.

              Schon gut, ich bin ja noch bei dir.

              Qapla'

              --
              Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
              (Mark Twain)
              1. @@Qapla'

                Warum das nicht funktioniert, hatte ich die gesagt.
                Naja laufen tuts trotzdem
                Aber nicht so, wie du es gern hättest.

                Doch eig. genau so ^^
                wenn du magst kann ich es dir gerne morgen via mail schicken dann kannst du dich selbst davon überzeugen^^

                Die Antwort auf mein Posting nicht mit der Antwort auf Martins Posting vermengen, sondern besser getrennt antworten.

                ok wollte nur nicht spammen

                Also später die Darstellung ändern. Wenn du gleich dein Script richtig schreibst, also die Darstellung gar nicht erst im Script angibst, musst du später am Script nichts mehr ändern, sondern nur im Stylesheet.

                hatte aber heute noch keine bilder bekommen, die kommen erst morgen^^

                ?? Was meinst du damit?

                ja der hat immer die "," zwischen den zahlen mitgelsesen aber funzt jetzt auch richtig.

                Naja für heute hab ich erstmal genug und mach feierabend.

                schönen abend noch

                Grüße Chris

                1. @@Chris:

                  nuqneH

                  @@Qapla'

                  Warum das nicht funktioniert, hatte ich die gesagt.
                  Naja laufen tuts trotzdem
                  Aber nicht so, wie du es gern hättest.
                  Doch eig. genau so ^^

                  Nein.

                  Dass document.getElementById(Verweis).style.backgroundColor.yellow nicht existiert, hatte ich dir doch gesagt.

                  Lass dir doch mal zum Debuggen document.getElementById(Verweis).style ausgeben (bspw. per alert()): Es liefert "[object CSSStyleDeclaration]". Das Objekt existiert.

                  Dann nun lass dir document.getElementById(Verweis).style.backgroundColor ausgeben: Wie Sie sehen, sehen sie nichts. Es ist nicht gesetzt, also ein Leerstring.

                  Und nun lass dir document.getElementById(Verweis).style.backgroundColor.yellow ausgeben: "undefined".

                  Wenn du das nun vergleichst if(document.getElementById(Verweis).style.backgroundColor.yellow== true), dann liefert das immer false. Es wird folglich immer in den else-Zweig gesprungen, was dich zu der Fehleinschätzung führt, dein Code würde das tun, was du erwartest.

                  Nicht einmal die Abfrage tut das Gewünschte. Und dass du im Fall einer mehrfach gezogenen Zufallszahl noch nichts tust, hatte ich ja auch schon erwähnt.

                  wenn du magst kann ich es dir gerne morgen via mail schicken

                  Nein danke. Du kannst aber gern dein Online-Beispiel hier verlinken.

                  Also später die Darstellung ändern. Wenn du gleich dein Script richtig schreibst, also die Darstellung gar nicht erst im Script angibst, musst du später am Script nichts mehr ändern, sondern nur im Stylesheet.

                  hatte aber heute noch keine bilder bekommen, die kommen erst morgen^^

                  Eben. Ein guter Grund, Programmlogik (JavaScript) und Darstellung (CSS) voneinander zu trennen.

                  Qapla'

                  --
                  Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                  (Mark Twain)
                  1. @@Qapla'

                    Warum das nicht funktioniert, hatte ich die gesagt.
                    Naja laufen tuts trotzdem
                    Aber nicht so, wie du es gern hättest.
                    Doch eig. genau so ^^

                    Nein.

                    Dass document.getElementById(Verweis).style.backgroundColor.yellow nicht existiert, hatte ich dir doch gesagt.
                    ...

                    also ich weiß nicht was du amchst aber bei mir gibt er yellow aus <a href="http://www.bilder-space.de/bilder/be4f09-1281507313.jpg" target="_blank"><img src="http://www.bilder-space.de/show_img.php?img=be4f09-1281507313.jpg&size=thumb" border="1" alt="Bilder-Space.de - Hostet DEINE Bilder" /></a>

                    else  
                                        {  
                                          document.getElementById(Verweis).style.backgroundColor="yellow";  
                    					  alert(document.getElementById(Verweis).style.backgroundColor)  
                    					}
                    
                    1. Sry das verlinken hat net so geklappt also hier nochmal der richtige link

                    2. Hallo Chris,

                      ... aber bei mir gibt er yellow aus ...

                      mit welchen Browsern getestet?

                      Gruß, Jürgen

                    3. @@Chris:

                      nuqneH

                      also ich weiß nicht was du amchst aber bei mir gibt er yellow aus […]
                      document.getElementById(Verweis).style.backgroundColor="yellow";
                      alert(document.getElementById(Verweis).style.backgroundColor)

                      Es ging mir nur darum zu zeigen, dass document.getElementById(Verweis).style.backgroundColor existiert; document.getElementById(Verweis).style.backgroundColor.yellow jedoch nicht.

                      Und wer ist „er“?

                      Nachdem du document.getElementById(Verweis).style.backgroundColor einen Wert zugewiesen hast, hat die Eigenschaft einen anderen Wert als "". Es ist aber nicht gesagt (siehe Martin), dass der Wert "yellow" ist. Opera gibt "#ffff00" aus.

                      Wie du diesem Umstand sinnvoll begegnest, hatte ich die auch schon gesagt: Du setzt nicht die Stileigenschaft, sondern weist eine Klasse zu. Diese sollte nicht nach der gegenwärtig gewünschten Darstellung benannt sein (also nicht "yellow"), denn wie du selbst sagtest, soll es ja später einmal ein Hintergrundbild sein, und dann passt die Bezeichnung "yellow" nicht mehr. Du benennst die Klasse nach der Funktion: in diesem Fall könnte sie "gezogen" heißen:

                      document.getElementById(Verweis).className += " gezogen";

                      Im Stylesheet steht, wie die Elemente dieser Klasse dargestellt werden sollen:

                      .gezogen { background-color: yellow }

                      Bei späterer Änderung musst du am JavaScript nichts mehr ändern (die Programmlogik ändert sich ja auch nicht), sondern nur am Stylesheet:

                      .gezogen { background-image: url(http://example.com/foo) }

                      Nun bleibt aber (mindestens) noch eine Frage offen.

                      Wie viele Felder werden gelb gefärbt? Wirklich immer 4? Die Wahrscheinlichkeit dafür ist mit 22/25 = 88% (wenn ich mich nicht vertan habe) recht hoch, aber es können auch weniger sein.

                      Ändere doch mal in for(var i = 0; i < 4+lvl-1; i++) die Anzahl der Schleifendurchläufe! (BTW, was ist lvl und warum rechnest du 4 - 1 nicht gleich zusammen?) Wenn die Schleife 22 Mal durchlaufen wird, ist die Wahrscheinlichkeit, dass 22 Felder gefärbt werden, nur noch 4/25 = 16% (mit obiger Einschränkung).

                      Was gedenkst du da zu tun?

                      Qapla'

                      --
                      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                      (Mark Twain)
                      1. @@Gunnar:

                        Und wer ist „er“?

                        er ist der Browser

                        Wie du diesem Umstand sinnvoll begegnest, hatte ich die auch schon gesagt: Du setzt nicht die Stileigenschaft, sondern weist eine Klasse zu.

                        ...
                        Jo schon geschehen

                        Nun bleibt aber (mindestens) noch eine Frage offen.

                        Wie viele Felder werden gelb gefärbt? Wirklich immer 4?

                        also in der ersten runde werden 4 gefärbt dann 5, dann 6 usw. bis 14 von 25 feldern in der letzten runde gefärbt sind.

                        Ändere doch mal in for(var i = 0; i < 4+lvl-1; i++) die Anzahl der Schleifendurchläufe! (BTW, was ist lvl und warum rechnest du 4 - 1 nicht gleich zusammen?)

                        hab ich auch schon gemacht

                        Was gedenkst du da zu tun?

                        nachdem die i-schleife in der ersten runde 4 mal durchlaufen wurde und lvl noch auf 1 ist soll er in eine andere funktion springen wobei er den parameter 1 übergeben soll
                        Dazu erstmal eine neue frage:
                        wenn ich das richtig verdatanden habe kann ich auf eine andere funktion einfach mit Funktionsname(1); verweisen?
                        anbei nochmal der code damit ihr nicht soviel nachschlagen müsst:

                          
                        for (var lvl=1; lvl<=10; lvl++)  
                        			{  
                        			  document.getElementById("Levelanz").value="Level"+" "+lvl;  
                        			  
                        for(var i = 1; i < 3+lvl; i++)  
                        {  
                          var Zahlen= new Array(1);  
                        				  
                            Zahlen[1] = Math.floor(Math.random()*25) + 1;  
                        				  
                              var Verweis = Zahlen[1]+"T";  
                        					  
                                if(document.getElementById(Verweis).className == "kastenB")  
                                {  
                                  i=i-1;  
                        					  
                                }  
                        				  
                                else  
                                {  
                                  document.getElementById(Verweis).className == "kastenB";  
                                }  
                                  if (i==3+lvl)  
                                  {  
                                    TrueoFalse(1);  
                                  }  
                        }  
                        
                        

                        Und nochmal kurz ne Frage:
                        warum += und nicht == bei
                        document.getElementById(Verweis).className += " gezogen";

                        1. @@Chris:

                          nuqneH

                          Und nochmal kurz ne Frage:
                          warum += und nicht == bei
                          document.getElementById(Verweis).className += " gezogen";

                          Die ist schnell beantwortet.

                          == wäre völlig falsch. MaudGuard hat dich auf den Unterschied zwischen Zuweisungsoperator = und Vergleichsoperator == hingewiesen. S.a. [http://de.selfhtml.org/javascript/sprache/operatoren.htm@title=SELFHTML]

                          document.getElementById(Verweis).className = "gezogen";

                          würde eine vorher evtl. schon vorhandene Klasse "foo" überschreiben.

                          document.getElementById(Verweis).className += " gezogen";

                          ist eine <http://de.selfhtml.org/javascript/sprache/operatoren.htm#berechnung@title=abgekürzte Schreibweise> für

                          document.getElementById(Verweis).className = document.getElementById(Verweis).className + " gezogen";

                          Eine evtl. vorhandene Klasse "foo" bleibt dann erhalten; das Element gehört beiden Klassen an: "foo gezogen".

                          Qapla'

                          --
                          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                          (Mark Twain)
                          1. Hi,

                            MaudGuard hat

                            nein, der nicht. Auch nicht HaroldGuard. ;-)

                            cu,
                            Andreas

                            --
                            Warum nennt sich Andreas hier MudGuard?
                            O o ostern ...
                            Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
                            1. @@MudGuard:

                              nuqneH

                              MaudGuard hat
                              nein, der nicht.

                              Aua. Dit jibt Haue.

                              Auch nicht HaroldGuard. ;-)

                              ??

                              Qapla'

                              --
                              Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                              (Mark Twain)
                              1. Hi,

                                MaudGuard hat
                                Auch nicht HaroldGuard. ;-)
                                ??

                                Du kennst "Harold and Maud[e]" nicht?

                                cu,
                                Andreas

                                --
                                Warum nennt sich Andreas hier MudGuard?
                                O o ostern ...
                                Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
                                1. @@MudGuard:

                                  nuqneH

                                  Du kennst "Harold and Maud[e]" nicht?

                                  Nö, noch nie gesehen.

                                  Qapla'

                                  --
                                  Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                                  (Mark Twain)
                                  1. Hi,

                                    Du kennst "Harold and Maud[e]" nicht?

                                    Nö, noch nie gesehen.

                                    Nachsitzen!

                                    äh - nachholen ;-)

                                    cu,
                                    Andreas

                                    --
                                    Warum nennt sich Andreas hier MudGuard?
                                    O o ostern ...
                                    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
                        2. @@Chris:

                          nuqneH

                          for (var lvl=1; lvl<=10; lvl++)
                          {
                            document.getElementById("Levelanz").value="Level"+" "+lvl;

                          Warum fasst du "Level"+" " nicht gleich zu "Level " zusammen?

                          for(var i = 1; i < 3+lvl; i++)

                          Du solltest dir einen Schreibstil angewöhnen und diesen durchgängig beibehalten. Oben hattest du ein Leerzeichen nach for, unten nicht. Oben hattest du keine Leerzeichen vor und nach Vergleichsoperatoren, unten schon.

                          Ich persönlich setze Leerzeichen zwischen for/if/switch und (, aber nicht zwischen Funktionsname und (.

                          Und auch vor und nach Berechnungsoperatoren (nicht jedoch bei unären ++, --, -, !).

                          Zur Einrückung ist ein Tab je Ebene zu empfehlen (lässt sich hier im Forum nicht machen). Das sähe dann so aus:

                          for (var lvl = 1; lvl <= 10; lvl++)  
                          {  
                            document.getElementById("Levelanz").value="Level " + lvl;  
                            
                            for(var i = 1; i < 3 + lvl; i++)  
                            {  
                              var Zahlen= new Array(1);
                          

                          Äh, wozu ein Array, wenn es nur ein Element enthält?

                          Zahlen[1] = Math.floor(Math.random()*25) + 1;

                          Das ist immer noch falsch.

                          var Verweis = Zahlen[1]+"T";

                          Und wozu das? Du möchtest das "T" nicht hinten anhängen, sondern vorne dranstellen, weil ID-Bezeichner in HTML nicht mit Ziffern beginnen dürfen?

                          if(document.getElementById(Verweis).className == "kastenB")
                                  {
                                    i=i-1;

                          Ah, das ist eine mögliche Lösung des Problems.

                          else
                                  {
                                    document.getElementById(Verweis).className == "kastenB";

                          Hier möchtest du zuweisen, nicht vergleichen.

                          if (i==3+lvl)
                                    {
                                      TrueoFalse(1);
                                    }

                          Aber was soll das?

                          Qapla'

                          --
                          Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                          (Mark Twain)
                          1. @Gunnar
                              document.getElementById("Levelanz").value="Level"+" "+lvl;

                            Warum fasst du "Level"+" " nicht gleich zu "Level " zusammen?

                            Weil ich so übersichtlicher finde.

                            Du solltest dir einen Schreibstil angewöhnen und diesen durchgängig beibehalten.

                            ...
                            Ja das kommt hoffentlich noch. wie gesagt ich habe Montag nachmittag erst angefangen, deshalb sind für dich wahrscheinlich auch manche sachen kompliziert ausgedrückt.

                            Zur Einrückung ist ein Tab je Ebene zu empfehlen (lässt sich hier im Forum nicht machen)

                            ...
                            wollts nur angenehmer zum lesen machen

                            Äh, wozu ein Array, wenn es nur ein Element enthält?

                            weil er jeden durchlauf 1 neues element erstellen soll

                            Das ist immer noch falsch.

                            wäre das so richtig:
                            Zahlen[1] = Math.random()*25;

                            var Verweis = Zahlen[1]+"T";

                            Und wozu das? Du möchtest das "T" nicht hinten anhängen, sondern vorne dranstellen, weil ID-Bezeichner in HTML nicht mit Ziffern beginnen dürfen?

                            o, sry, hatte ich vergessen zurück zu ändern war zu experimentellen zwecken

                            else
                                    {
                                      document.getElementById(Verweis).className == "kastenB";

                            Hier möchtest du zuweisen, nicht vergleichen.

                            danke schon geändert

                            if (i==3+lvl)
                                      {
                                        TrueoFalse(1);
                                      }

                            Aber was soll das?

                            das war die unten hinzugefügte frage:
                            1.Wie kann ich richtig auf eine andere function verweisen? das einzige was ich dazu finde ist auf eine andere Datei zu verweisen.

                          2. Hallo,

                            Ich persönlich setze Leerzeichen zwischen for/if/switch und (, aber nicht zwischen Funktionsname und (.

                            ach, tatsächlich?

                            for (var lvl = 1; lvl <= 10; lvl++)

                            {
                              document.getElementById("Levelanz").value="Level " + lvl;

                            for(var i = 1; i < 3 + lvl; i++)
                              {
                                var Zahlen= new Array(1);

                              
                            Ach so, nicht bei verschachtelten for, if oder switch. ;-)  
                              
                            
                            > Und auch vor und nach Berechnungsoperatoren  
                              
                            Das mache ich in einigen Fällen absichtlich nicht - beispielsweise im Kopf einer for-Schleife, wo drei Ausdrücke hintereinander stehen. Grundsätzlich schreibe ich Operator und Operanden dort ohne Leerzeichen zusammen, wo sie eine zusammenhängende Sinneinheit darstellen und ich diese Einheiten (Teilausdrücke) visuell gruppieren möchte:  
                              
                            `for (var lvl=1; lvl<=10; lvl++)`{:.language-javascript}  
                              
                            
                            > >     Zahlen[1] = Math.floor(Math.random()\*25) + 1;  
                            > Das ist immer noch falsch.  
                              
                            Kommt drauf an, was man möchte. Das Array, das ursprünglich mit nur einem Element initialisiert wurde, bekommt ein zweites, nämlich eine Ganzzahl im Bereich [1 .. 25]. Der ganze Umgang mit Arrays, den Chris hier zeigt, ist aber ziemlich seltsam (ich würde sagen konfus), und so weiß ich nicht, was er hier überhaupt will.  
                              
                            Ciao,  
                             Martin  
                            
                            -- 
                            Lieber blau machen, als sich schwarz ärgern.  
                              
                            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                            
                            1. @@Der Martin:

                              nuqneH

                              for(var i = 1; i < 3 + lvl; i++)
                                {
                                  var Zahlen= new Array(1);[/code]

                              Ach so, nicht bei verschachtelten for, if oder switch. ;-)

                              Oops. Oops.

                              Zahlen[1] = Math.floor(Math.random()*25) + 1;
                              Das ist immer noch falsch.

                              Kommt drauf an, was man möchte. Das Array, das ursprünglich mit nur einem Element initialisiert wurde, bekommt ein zweites, nämlich eine Ganzzahl im Bereich [1 .. 25].

                              Oh, das soll wohl auch. Dann lag ich ja von Anfang an falsch. Wer lesen kann …

                              Der ganze Umgang mit Arrays, den Chris hier zeigt, ist aber ziemlich seltsam (ich würde sagen konfus), und so weiß ich nicht, was er hier überhaupt will.

                              Da bin ich bei dir. ;-)

                              Qapla'

                              --
                              Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                              (Mark Twain)
    2. @@Chris:

      nuqneH

      Das läuft jetzt soweit.

      Das glaube ich nicht.

      Zahlen[i] = Math.floor(Math.random()*25) + 1;

      Dass das falsch ist, hatte ich dir schon gesagt.

      if(document.getElementById(Verweis).style.backgroundColor.yellow== true)

      Dass das falsch ist, hatte ich dir auch schon gesagt.

      und sry das ich keine stylesheets verwendie die kommen bei mir erst ganz zum schluss hauptsache sollte erstmal sein das es läuft.^^

      Das ist Unsinn. Schon deshalb, weil doppelte Arbeit.

      Qapla'

      --
      Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
      (Mark Twain)
  7. Hi,

    Wenn ich diese Funktion jetzt durch Firebugs untersuchen lasse sagt er mir: int is not defined
    rand() is not defined
    Zahlen[i] = int(rand(25) + 1);

    Ich bin dankbar um jeden Tipp, da ich erst gestern mit JS angefangen habe.

    Tipp: Verwende keine Funktionen, von denen du irgendwie annimmst, es „müsste“ sie in JavaScript geben - sondern lies nach und *informiere* dich, welche es gibt.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?