Andreas: Parameter in Document Object

Hallo,
ich habe Bildddateien, die alle v1.jpg bis v99.jpg heißen,
bzw. den Namen v1 bis v99 haben.
Die Anweisung lautet z.B. so:
document["v1"].src="noviereck.jpg";
document["v2"].src="noviereck.jpg";
...

jetzt möchte ich in einer For-Schleife das erledigen um nur noch einmal die Anweisung zu haben.
Aus VBA kenne ich diese Schreibweise:

For (i=1; i<=20; i++){
document["v"+i].src="noviereck.jpg";
}

Kann ich sowas in JScript auch machen, und wenn ja wie geht das?

Gruß Andreas

  1. Aus VBA kenne ich diese Schreibweise:

    For (i=1; i<=20; i++){
    document["v"+i].src="noviereck.jpg";
    }

    Kann ich sowas in JScript auch machen, und wenn ja wie geht das?

    Genauso wie du es schreibst.
    Du kannst es noch verfeinern: document.images['v' + i].src;

    Struppi.

    1. Hallo,
      das hatte ich ja eigentlich auch gedacht, aber ich bekomm bei folgendem Code einen Fehler:
      var i=0;
      for (i=0; i<=13; i++){
      document.images['v'+i].src="noviereck.jpg";
      }

      Fehler: document.images[] ist Null oder kein Objekt

      Gruß Andreas

      1. Hallo,
        das hatte ich ja eigentlich auch gedacht, aber ich bekomm bei folgendem Code einen Fehler:
        var i=0;
        for (i=0; i<=13; i++){
        document.images['v'+i].src="noviereck.jpg";
        }

        Fehler: document.images[] ist Null oder kein Objekt

        Du kannst auf die Bilder erst zugreifen, wenn dein Dokument fertig geladen ist.

        window.onload = changeImg;

        function chnageImg()
        {
        var i=0;
        for (i=0; i<=13; i++){
        document.images['v'+i].src="noviereck.jpg";

        }

        Struppi.

        1. Hallo,

          Du kannst auf die Bilder erst zugreifen, wenn dein Dokument fertig geladen ist.

          das kann aber nicht der Fehler sein, da ich die function per OnClick bzw. per OnMouseMOver auslöse, also weit nachdem das Dokument geladen wurde. Bei deinem Code kommt also der gleiche Fehler.
          Nachfolgend habe ich mal den Code gepostet. Ergebnis siehe URL.

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
          <html>
          <head>
          <title>Rundgang Zimmer 4</title>
          <script language="javascript">
           var k = 0;

          function imgOn(img_name,img_src) {
            document[img_name].src=img_src;
            switch(k){
             case 7: document['detail'].useMap="#Bild4";break;
             case 8: document['detail'].useMap="#Bild5";break;
             case 9: document['detail'].useMap="#Bild6";break;
             case 11: document['detail'].useMap="#Bild1";break;
             case 12: document['detail'].useMap="#Bild2";break;
             case 13: document['detail'].useMap="#Bild3";break;
             default: document['detail'].useMap="#noMap";break;
           } }

          function vor(){
              k = k + 1;
                 if (k > 13)
             k=1;
             anzeigen();
             bar();
           }

          function zurück(){
            k = k - 1;
               if (k < 1)
             k=13;
              anzeigen();
              bar();
           }

          function bar(){
            document["v1"].src="noviereck.jpg";
            document["v2"].src="noviereck.jpg";
            document["v3"].src="noviereck.jpg";
            document["v4"].src="noviereck.jpg";
            document["v5"].src="noviereck.jpg";
            document["v6"].src="noviereck.jpg";
            document["v7"].src="noviereck.jpg";
            document["v8"].src="noviereck.jpg";
            document["v9"].src="noviereck.jpg";
            document["v10"].src="noviereck.jpg";
            document["v11"].src="noviereck.jpg";
            document["v12"].src="noviereck.jpg";
            document["v13"].src="noviereck.jpg";
            switch(k){
             case 1: document["v1"].src="viereck.jpg";break;
             case 2: document["v2"].src="viereck.jpg";break;
             case 3: document["v3"].src="viereck.jpg";break;
             case 4: document["v4"].src="viereck.jpg";break;
             case 5: document["v5"].src="viereck.jpg";break;
             case 6: document["v6"].src="viereck.jpg";break;
             case 7: document["v7"].src="viereck.jpg";break;
             case 8: document["v8"].src="viereck.jpg";break;
             case 9: document["v9"].src="viereck.jpg";break;
             case 10: document["v10"].src="viereck.jpg";break;
             case 11: document["v11"].src="viereck.jpg";break;
             case 12: document["v12"].src="viereck.jpg";break;
             case 13: document["v13"].src="viereck.jpg";break;
           } }

          function anzeigen(){
            bar();
            switch (k){
             case 1: imgOn("detail","1b1.JPG");break;
             case 2: imgOn("detail","1b2.JPG");break;
             case 3: imgOn("detail","1b3.JPG");break;
             case 4: imgOn("detail","1b4.JPG");break;
             case 5: imgOn("detail","1b5.JPG");break;
             case 6: imgOn("detail","1b6.JPG");break;
             case 7: imgOn("detail","1b7.JPG");break;
             case 8: imgOn("detail","1b8.JPG");break;
             case 9: imgOn("detail","1b9.JPG");break;
             case 10: imgOn("detail","1b10.JPG");break;
             case 11: imgOn("detail","1b11.JPG");break;
             case 12: imgOn("detail","1b12.JPG");break;
             case 13: imgOn("detail","1b13.JPG");break;
           } }
          </script>
          </head>

          <body background="firstback.gif"><br>
          <h1 align="center">Rundgang durch das Zimmer Nr. 4</h1><br>
          <P align=center><IMG src="1b1.JPG" alt="" name="detail" border=0 height="250"></P>

          <table border="0" cellpadding="0" cellspacing="0" align="center">
          <tr>
          <td>
          <IMG src="Pfeil_links.gif" height="25" onclick="zurück()" style="CURSOR: pointer" alt="zurück">
          </td>
          <td>
          <table border="1" bordercolorlight="Black" cellpadding="0" cellspacing="0" align="center"><tr>
          <td><img src="viereck.jpg" name="v1" onMouseOver="anzeigen(1)" border="0"></td>
          <td><img src="noviereck.jpg" name="v2" onMouseOver="anzeigen(2)" border="0" ></td>
          <td><img src="noviereck.jpg" name="v3" onMouseOver="anzeigen(3)" border="0"></td>
          <td><img src="noviereck.jpg" name="v4" onMouseOver="anzeigen(4)" border="0"></td>
          <td><img src="noviereck.jpg" name="v5" onMouseOver="anzeigen(5)" border="0"></td>
          <td><img src="noviereck.jpg" name="v6" onMouseOver="anzeigen(6)" border="0"></td>
          <td><img src="noviereck.jpg" name="v7" onMouseOver="anzeigen(7)" border="0"></td>
          <td><img src="noviereck.jpg" name="v8" onMouseOver="anzeigen(8)" border="0"></td>
          <td><img src="noviereck.jpg" name="v9" onMouseOver="anzeigen(9)" border="0"></td>
          <td><img src="noviereck.jpg" name="v10" onMouseOver="anzeigen(10)" border="0"></td>
          <td><img src="noviereck.jpg" name="v11" onMouseOver="anzeigen(11)" border="0"></td>
          <td><img src="noviereck.jpg" name="v12" onMouseOver="anzeigen(12)" border="0"></td>
          <td><img src="noviereck.jpg" name="v13" onMouseOver="anzeigen(13)" border="0"></td>
          </tr>
          </table>
          </td>
          <td>
          <IMG src="Pfeil_rechts.gif" height="25" onclick="vor()" style="CURSOR: pointer" alt="vor">
          </td>
          </tr>
          </table>

          <MAP NAME="Bild1"><AREA id='area1' SHAPE=RECT COORDS="230,0,330,240" HREF="RundgangZimmer.htm" ALT="Zurück zur Zimmerauswahl" href="javascript:;" target="_self"></MAP>
          <MAP NAME="Bild2"><AREA id='area2' SHAPE=RECT COORDS="80,40,170,220" HREF="RundgangZimmer.htm" ALT="Zurück zur Zimmerauswahl" href="javascript:;" target="_self"></MAP>
          <MAP NAME="Bild3"><AREA id='area3' SHAPE=RECT COORDS="0,40,85,220" HREF="RundgangZimmer.htm" ALT="Zurück zur Zimmerauswahl" href="javascript:;" target="_self"></MAP>
          <MAP NAME="Bild4"><AREA id='area4' SHAPE=RECT COORDS="260,30,330,240" HREF="BadZimmer1.htm" ALT="Zum Badezimmer" href="javascript:;" target="_self"></MAP>
          <MAP NAME="Bild5"><AREA id='area5' SHAPE=RECT COORDS="160,25,260,220" HREF="BadZimmer1.htm" ALT="Zum Badezimmer" href="javascript:;" target="_self"></MAP>
          <MAP NAME="Bild6"><AREA id='area6' SHAPE=RECT COORDS="60,35,155,220" HREF="BadZimmer1.htm" ALT="Zum Badezimmer" href="javascript:;" target="_self"></MAP>
          <MAP NAME="noMap"><AREA id='areaX' SHAPE=RECT COORDS="0,0,0,0"></MAP>

          </body>
          </html>

          1. Hallo,

            Du kannst auf die Bilder erst zugreifen, wenn dein Dokument fertig geladen ist.
            das kann aber nicht der Fehler sein, da ich die function per OnClick bzw. per OnMouseMOver auslöse, also weit nachdem das Dokument geladen wurde. Bei deinem Code kommt also der gleiche Fehler.
            Nachfolgend habe ich mal den Code gepostet. Ergebnis siehe URL.

            Du solltest deine Debugging Modus verbessern.
            Ich krieg die Meldung:
            "ungültiges Zeichen" in der Zeile:
            function zurück()

            'ü' ist verboten (in VB nicht?)

            Struppi.

            1. Hallo,

              Du solltest deine Debugging Modus verbessern.
              Ich krieg die Meldung:
              "ungültiges Zeichen" in der Zeile:
              function zurück()
              'ü' ist verboten (in VB nicht?)

              warum funzt das dann bei meinem Provider?
              Aber das ist ja nicht mein Problem, sondern wie oben beschrieben die Parameterkombination aus Zählvariable und String.
              Gruß Andreas

              1. Hallo,

                Du solltest deine Debugging Modus verbessern.
                Ich krieg die Meldung:
                "ungültiges Zeichen" in der Zeile:
                function zurück()
                'ü' ist verboten (in VB nicht?)
                warum funzt das dann bei meinem Provider?
                Aber das ist ja nicht mein Problem, sondern wie oben beschrieben die Parameterkombination aus Zählvariable und String.

                Bitte!

                1. solltest du dir einmal die Mühe machen genau zu schauen, was nicht funktioniert. Bei mir klappt das ansprechen der Bilder auf die von mir beschriebene Art schon seit Jahren ohne Probleme.
                http://glasgoogle.de kann dir vielleicht  weiterhelfen (am besten Mozilla oder Netscape benutzen) um rauszufinden wo genau der Fehler ist.

                2.) hat JS nichts mit deinem Provider zu tun. Es gibt sonderzeichen die nicht in variabeln oder funktionsnamen stehen dürfen. Und du sagst doch das es nicht funktioniert und auf einmal funktioniert es doch?

                *leicht entnervt*

                Struppi.

                1. Hallo,

                  *leicht entnervt*

                  nur die Ruhe bewahren ;-)
                  In meinem Posting oben habe ich einen Code gepostet. dieser Code funktioniert natürlich, siehe auch genannnte URL.
                  Was ich möchte ist, daß ich den Code vereinfache und nicht 30 mal die fast gleiche Anweisung schreiben muss. (siehe Code)
                  Also geht es nicht um die Umlaute, denn diese funktionieren ja bei mir zumindest.
                  Als du den Fehler hattest, hast du den Code probiert oder die URL aufgerufen?

                  Gruß Andreas

                  1. Was ich möchte ist, daß ich den Code vereinfache und nicht 30 mal die fast gleiche Anweisung schreiben muss. (siehe Code)

                    Der code ist wirklich so ein typischer VBA Code, (unnötige) ellenlange switch-case Bedingungen.

                    Nur mal so als Beispiel:
                    switch(num){
                     case 1: document["v1"].src="viereck.jpg";break;
                     case 2: document["v2"].src="viereck.jpg";break;
                     case 3: document["v3"].src="viereck.jpg";break;
                     case 4: document["v4"].src="viereck.jpg";break;
                     case 5: document["v5"].src="viereck.jpg";break;
                     case 6: document["v6"].src="viereck.jpg";break;
                     case 7: document["v7"].src="viereck.jpg";break;
                     case 8: document["v8"].src="viereck.jpg";break;
                     case 9: document["v9"].src="viereck.jpg";break;
                     case 10: document["v10"].src="viereck.jpg";break;
                    }

                    Dieser Code ist gleichbedeutend mit:

                    document['v' + num].src = ="viereck.jpg";

                    Also geht es nicht um die Umlaute, denn diese funktionieren ja bei mir zumindest.

                    In welchen Browser?
                    http://www.netzwelt.com/selfhtml/javascript/sprache/regeln.htm#namen

                    Umlaute sind nicht erlaubt und wenn es bei dir läuft, hast du einen kaputten Browser. Es sollte aber bei sonst niemanden laufen. Das hat (zum wiederholten male) nichts mit deinem Provider zu tun, sondern allerhöchstens mit deinem kaputten Broswer.

                    Als du den Fehler hattest, hast du den Code probiert oder die URL aufgerufen?

                    Den code (im Internet surfe ich ohne Javascript) und da passiert bei mir gar nichts.

                    Struppi.

                    1. Hallo,

                      Der code ist wirklich so ein typischer VBA Code, (unnötige) ellenlange switch-case Bedingungen.

                      Nein eben gerade nicht, denn in VBA kann ich dies in einer For-Schleife abhandeln, nur in JScript klappts eben nicht.

                      document['v' + num].src = ="viereck.jpg";

                      Ich habe doch oben gepostet, daß ich das genau so machen möchte, aber ich bekomm ständig nur Fehlermeldungen.

                      Habe aber gerade herausgefunden warum: In der Vorschau in Homesite 4.5.1, mit der ich arbeite, wird ein Fehler angezeigt, in der Ansicht im IE Browser aber nicht. Folglich ist das wohl ein Fehler des Homesite-internen Browsers.
                      Gruß und Danke für die Hilfsbereitschaft
                      Andreas