Anfängerproblem mit Schleife

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anfängerproblem mit Schleife

    Hallo Community,

    bitte seid mir nicht böse, wenn ich hier mal eine Anfängerfrage stelle, aber die SuFu nutzt mir in diesem Fall nix, da mir kein Suchwort einfällt -.-

    Also ich bin völliger Neuling in Javascript, stelle aber fest das die Logik der von PHP ähnelt und finde mich deswegen eigentlich ganz gut zurecht. Nur die Syntax bereitet mir halt Probleme...

    PHP-Code:
    if (document.images) {
    main_image1 = new Image;
    main_image2 = new Image;
    main_image3 = new Image;
    main_image4 = new Image;
    main_image5 = new Image;
    main_image6 = new Image;
    main_image7 = new Image;
    main_image8 = new Image;
    main_image9 = new Image;
    main_image1.src 'img\/preview\/01.gif';
    main_image2.src 'img\/preview\/02.gif';
    main_image3.src 'img\/preview\/03.gif';
    main_image4.src 'img\/preview\/04.gif';
    main_image5.src 'img\/preview\/05.gif';
    main_image6.src 'img\/preview\/06.gif';
    main_image7.src 'img\/preview\/07.gif';
    main_image8.src 'img\/preview\/08.gif';
    main_image9.src 'img\/preview\/09.gif';

    Diese Abhandlung möchte ich wegen der Länge lieber als Schleife durchlaufen lassen... Mir ist dazu folgendes eingefallen:

    PHP-Code:
    if (document.images) {
    i=1;
    while (
    i<10){
    'main_image' = new Image;
    'main_image' '.src' 'img\/preview\/0' '.gif';
    i++;
    }

    Das Skript funktioniert perfekt, solange ich es mit ersterer Schreibweise aufrufe. Ersetze ich diesen Teil durch die Schleife, bekomme ich den Fehler, das mir in der zugehörigen HTML-Datei "main_imageX.src" nicht definiert ist...

    Aufgerufen wird die Funktion mit
    PHP-Code:
    onmouseover="document.preview.src=main_image5.src;" 
    Also ich hab jetzt zig Seiten nach der korrekten Schreibweise für Schleifen gefunden, trotzdem verstehe ich nicht, warum das Skript mit der Schleife nicht läuft. Wo liegt der Fehler?

    Danke für eure Hilfe.
    Grüße aus Dresden,
    Dampfi

  • #2
    bitte seid mir nicht böse, wenn ich hier mal eine Anfängerfrage stelle, aber die SuFu nutzt mir in diesem Fall nix, da mir kein Suchwort einfällt -.-
    Schonmal das richtige Forum erwischt, das ist ein guter Anfang
    Das Skript funktioniert perfekt, solange ich es mit ersterer Schreibweise aufrufe. Ersetze ich diesen Teil durch die Schleife, bekomme ich den Fehler, das mir in der zugehörigen HTML-Datei "main_imageX.src" nicht definiert ist...
    Ist sie auch nicht! Eine String ist kein Variabelnnamen. imho müsstest du mit eval() arbeiten, um deine String zu Variabeln zu machen.
    Und wenn du Vars erstellst, solltest du ihnen auch das Schlüsselwort var voranstellen.

    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Hmm, danke erstmal für deine Antwort.

      eval() sagt mir erstmal nix... Ich werde mir das mal anlesen und ausprobieren...

      Kommentar


      • #4
        eval() hat die gleiche Funktion wie eval() in PHP
        PHP-Code:
        $str 'Hallo Welt';
        eval(
        "\$str='Tschüss Welt';");
        echo 
        $str
        müsste dir 'Tschüss Welt' ausgeben
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          PHP-Code:
          $str 'Hallo Welt';
          eval(
          "\$str='Tschüss Welt';");
          echo 
          $str
          OK, soweit verstanden. Nur entzieht sich mir der Sinn dieser Funktion...

          Abgeleitet aus deinem Beispiel wäre es doch in PHP einfacher das so zu machen:

          PHP-Code:
          $str 'Hallo Welt';
          $str 'Tschüss Welt';
          echo 
          $str
          Abgesehen von der Schwachsinnigkeit dieses Skripts: Das Resultat ist das gleiche... Wozu also eval() benutzen???
          Nützt mir aber eh nix, weil ich ja jetzt in Javascript bin...

          Hab den Dreh immernoch nicht raus, hab da jetzt mit "var" un "eval()" bissl rumgespielt, aber es hat nicht funktioniert. Soviele Möglichkeiten kann es doch da nicht geben. Wenn ich es schon nicht verstehe, dann hätte ich doch vielleicht zufällig das richtig einfügen müssen bei den paar Möglichkeiten!?

          Kommentar


          • #6
            Abgesehen von der Schwachsinnigkeit dieses Skripts: Das Resultat ist das gleiche... Wozu also eval() benutzen???
            Wenn das übergebene Argument als Objekt oder Objekteigenschaft interpretiert werden kann, wird das Objekt bzw. die Objekteigenschaft zurückgegeben. Dies ist wichtig, wenn eine Zeichenkette (z.B. ein Formularfeldinhalt oder ein einer Funktion übergebener Parameter) als Objekt interpretiert werden soll.
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              Hmm, ok. Dann werde ich wohl eval() wirklich brauchen.

              Trotzdem stimmt da was nicht.
              PHP-Code:
              i=1;
              while (
              i<10){
              var 
              test'main_image'+'.src' 'img\/preview\/0' '.gif';
              i++;

              Wenn ich nicht komplett falsch denke, speichert es mir nun meinen auszuführenden Befehl als String in der Variable "test". Richtig?

              Anschließend rufe ich den Befehl folgendermaßen auf:
              PHP-Code:
              onmouseover="document.preview.src=eval(test);" 
              Funktioniert aber irgendwie immernoch nicht!? BIn für jeden Denkanstoß dankbar, weil das will ich vorm Wochenende noch schaffen...

              Kommentar


              • #8
                eval ist voll Käse an dieser Stelle! Du musst in deiner Schleife einfach vernünftig programmieren, dann geht das auch!
                Versuch mal folgendes:
                PHP-Code:
                if (document.images) {
                    var 
                images = [];
                    for( var 
                i=1i<10i++ ) {
                        
                images[i] = new Image;
                        
                images[i].src 'img/preview/0' '.gif';
                    }

                Kommentar


                • #9
                  Hab alles an mein Skript angepasst, funktioniert aber trotzdem nicht!
                  Trotzdem danke für deine Bemühung... Im Prinzip ist es ja wurscht ob for oder while (von der Schleife her), aber auch in deinem Beispiel kommt die Fehlermeldung: "images1 undefiniert".

                  Ach und sorry falls ich nerve, aber jeder fängt mal klein an

                  Also ich hab aus Spaß deine for-Schleife mal in eine while-Schleife umgewandelt (mag die lieber):

                  PHP-Code:
                  if (document.images) {
                  var 
                  i=1;
                  var 
                  images = [];
                  while (
                  i<10){
                  images[i] = new Image;
                  images[i].src 'img/preview/0' '.gif';
                  i++;
                  }

                  Auch hier kommt der gleiche Fehler... Also ist wohl dein Skript auch "nicht vernünftig" programmiert
                  Zuletzt geändert von Dampfi; 08.02.2008, 17:49.

                  Kommentar


                  • #10
                    aber auch in deinem Beispiel kommt die Fehlermeldung: "images1 undefiniert".
                    In meinem Skript steht kein images1, das ist dein Fehler
                    Zeig mal deinen jetzigen Code her

                    PS: Und ja, for oder while ist natürlich egal!

                    Kommentar


                    • #11
                      Nee, "images1" steht bei dir natürlich nicht, sondern "images[i]"...

                      Und für das "[i]" soll er ja die Zahlen 1 bis 9 einsetzen. Da aber offenbar das Skript images[i] nicht definiert, erfolgt über die HTML-Ausgabe "images1", "images2", ..., "images9" der Fehler.

                      Skript steht im allerersten Post. Das ist alles was du brauchst denke ich. Im übrigen habe ich das "main_image" mit "images" ausgetauscht, nicht das du mich für vollkommen dumm hälst

                      Vielen Dank!

                      Kommentar


                      • #12
                        Und für das "[ i ]" soll er ja die Zahlen 1 bis 9 einsetzen. Da aber offenbar das Skript images[ i ] nicht definiert, erfolgt über die HTML-Ausgabe "images1", "images2", ..., "images9" der Fehler.
                        Statt imagesi muss es in der HTML Ausgabe natürlich images[i] heißen, wobei i deine Laufvariable ist.
                        Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                        Kommentar


                        • #13
                          JAAA. Da lag der Hund begraben... Jetzt funktioniert es so wie ich das will

                          Super! Vielen lieben Dank an die Helferlein. Ihr habt mir echt weitergeholfen!

                          Euch noch ein schönes Wochenende
                          Gruß,
                          Dampfi

                          Kommentar

                          Lädt...
                          X