dobardan: grafik tausch Porblem

  
var Anzahl=9;  
Foto = new Array(Anzahl);  
for (i=0; i<9; i++)  
{  
Foto[i]=newImage();  
Foto[i].src="images/"+i+".jpg";  
}  
function exchange(number,fotonew){  
document.images[number].src=Foto[fotonew].src;  
}  

  
<body onload="exchange()">  
<a href="#" onMouseOver="exchange(1,2)" onMouseOut="exchange(2,1)"><img src="images/1.jpg" border="0"></a><br><br>  
<a href="#" onMouseOver="exchange(3,0)" onMouseOut="exchange(0,3)"><img src="images/3.jpg" border="0" /></a><br><br>  
<a href="#" onMouseOver="exchange(4,5)" onMouseOut="exchange(5,4)"><img src="images/4.jpg" border="0"></a>  

Bei IE gibt mir die Fehlermeldung
Object erwartet

Ich verstehe das nicht, welche Object fehlt hier.

Danke

  1. Lieber dobardan,

    function exchange(number,fotonew){

    document.images[number].src=Foto[fotonew].src;
    }

    
    >   
    > `<body onload="exchange()">`{:.language-html}  
      
    Fällt Dir etwas auf?  
      
    
    > Bei IE gibt mir die Fehlermeldung  
    > Object erwartet  
      
    Aber na klar!  
      
    
    > Ich verstehe das nicht, welche Object fehlt hier.  
      
    Dann schau doch einmal, in welcher Zeile der Fehler aufgetreten sein soll und was Du dort genau gemacht hast!  
      
    Liebe Grüße,  
      
    Felix Riesterer.
    
    -- 
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    
    1. Lieber Felix,
       ~~~javascript function exchange(number,fotonew){
       document.images[number].src=Foto[fotonew].src;
       }

        
      `<body onload="exchange()">`{:.language-html}  
      Meinst Du Hier  
      `<body onload="exchange(number,fotonew);">`{:.language-html}  
        
      Bei IE gibt mir die Fehlermeldung  
      Object erwartet Zeile 22  
        
      und dort steht  
        
      ~~~html
        
      <a href="#" onMouseOver="exchange(4,5)" onMouseOut="exchange(5,4)"><img src="images/4.jpg" border="0"></a>  
      
      

      Hier möchte ich bild4 zu bild5 tauschen und bei OnMouseout umgekehrt.

      Liebe Grüße,

      dobardan

      1. Lieber dobardan,

        <a href="#" onMouseOver="exchange(4,5)" onMouseOut="exchange(5,4)"><img src="images/4.jpg" border="0"></a>

        Hier möchte ich bild4 zu bild5 tauschen und bei OnMouseout umgekehrt.

        die erste Zahl steht für das <img>-Element, die zweite Zahl für die anzuzeigende Grafik, die in einem eigenen Bild-Objekt gespeichert und vorgeladen wurde, richtig?

        Damit bewirkt exchange(5,4), dass im fünften(!) Bild-Element der Seite diejenige Bilddatei angezeigt wird, die im sechsten(!) Foto-Bildobjekt vorgeladen wurde.

        Die Anweisung exchange(4,5) bewirkt wiederum, dass im sechsten(!) Bild-Element der Seite das Bild, das im fünften(!) Foto-Bildobjekt enthalten ist, angezeigt wird.

        Tun also die exchange-Anweisungen wirklich das, was Du wolltest? Sind auf Deiner Seite wirklich sechs Bild-Elemente (<img>) enthalten?

        Liebe Grüße,

        Felix Riesterer.

        --
        ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
        1. Lieber Felix,

          <a href="#" onMouseOver="exchange(4,5)" onMouseOut="exchange(5,4)"><img src="images/4.jpg" border="0"></a>

          jetzt verstehe ich besser

          das soll so sein
          <a href="#" onMouseOver="exchange(4,5)" onMouseOut="exchange(4,4)"><img src="images/4.jpg" border="0"></a>

          d.h.

          OnMouseover wird das bild auf 5. stelle(da array fängt ab 0 an) mit das Bildno. 5 getauscht. Richtig oder verstehe ich falsch?

          Damit bewirkt exchange(5,4), dass im fünften(!) Bild-Element der Seite diejenige Bilddatei angezeigt wird, die im sechsten(!) Foto-Bildobjekt vorgeladen wurde.

          Tun also die exchange-Anweisungen wirklich das, was Du wolltest? Sind auf Deiner Seite wirklich sechs Bild-Elemente (<img>) enthalten?

          ja ich habe 6 Bilder.

          Jetzt habe ich neue Fehlermeldung:
          number ist undefiniert. Zeile 18

          und dort steht <body onload="exchange(number,fotonew);">

          Liebe Grüße,

          dobardan

          1. Tun also die exchange-Anweisungen wirklich das, was Du wolltest? Sind auf Deiner Seite wirklich sechs Bild-Elemente (<img>) enthalten?

            ja ich habe 6 Bilder.

            warum machst du nicht einfach eine Überprüfung, so wie ich sie dir bereits vorgeschlagen habe?

            Jetzt habe ich neue Fehlermeldung:
            number ist undefiniert. Zeile 18

            und dort steht <body onload="exchange(number,fotonew);">

            number hat hier keinen Wert, was soll denn der Aufruf bezwecken?

            Struppi.

            1. Tun also die exchange-Anweisungen wirklich das, was Du wolltest? Sind auf Deiner Seite wirklich sechs Bild-Elemente (<img>) enthalten?

              warum machst du nicht einfach eine Überprüfung, so wie ich sie dir bereits vorgeschlagen habe?

              Ok vielleicht verstehe ich hier was falsch. Ich erkläre jetzt gesamtes

                
              var Anzahl=6; //Hier Anzahl der Bilder  
              Foto = new Array(Anzahl); // gesamte Bilder in array umgefasst  
              for (i=0; i<6; i++)  
              /*Bildelement werden vom 0 anfängen und bis 6te Bildelement gezählt.  
              wenn Bildelemente kleiner als 7 (was immer der Fall ist), werden die  
              nächte Bildelemente gezählt. d.h. 0,1,2,3,4,5*/  
              {  
              Foto[i]=newImage();  
              Foto[i].src="images/"+i+".jpg";/*hier pfad von meine Bilder.dh. Bilder liegen in images Ordner/number vom bild und jpg als format*/  
              }  
              //function für Tauschen der Bilder  
              function exchange(number,fotonew){  
              document.images[number].src=Foto[fotonew].src;  
              }  
              
              

              Jetzt habe ich neue Fehlermeldung:
              number ist undefiniert. Zeile 18

              und dort steht <body onload="exchange(number,fotonew);">

              number hat hier keinen Wert, was soll denn der Aufruf bezwecken?

              Hier wollte ich mein function aufrufen die beim seitenladen ausgeführt werden soll. Wenn ich die beide Parameter raus lasse dann bekomme ich
              die Fehlermeldung object erwartet. Wenn ich die beide parameter rein
              schreibe dann bekomme ich die Fehlermeldung number ist undefiniert.

              Danke
              dobardan

              1. und dort steht <body onload="exchange(number,fotonew);">

                number hat hier keinen Wert, was soll denn der Aufruf bezwecken?
                Hier wollte ich mein function aufrufen die beim seitenladen ausgeführt werden soll. Wenn ich die beide Parameter raus lasse dann bekomme ich
                die Fehlermeldung object erwartet. Wenn ich die beide parameter rein
                schreibe dann bekomme ich die Fehlermeldung number ist undefiniert.

                exchange erwartet beim Aufruf zwei Zahlen die mit dem Array-Index bzw. der Bildnummer korrespondieren. Was du hier reinschreibst sind aber einmal 2 an dieser Stelle unbekannte Variabeln (die kennt das Skript nämlich nur innerhalb der Function) oder gar nichts. Beides passt nicht. Und eigentlich erscheint mir der Aufruf an dieser Stelle ohnehin komplett sinnlos!

                1. und dort steht <body onload="exchange(number,fotonew);">

                  number hat hier keinen Wert, was soll denn der Aufruf bezwecken?
                  Hier wollte ich mein function aufrufen die beim seitenladen ausgeführt werden soll. Wenn ich die beide Parameter raus lasse dann bekomme ich
                  die Fehlermeldung object erwartet. Wenn ich die beide parameter rein
                  schreibe dann bekomme ich die Fehlermeldung number ist undefiniert.

                  exchange erwartet beim Aufruf zwei Zahlen die mit dem Array-Index bzw. der Bildnummer korrespondieren. Was du hier reinschreibst sind aber einmal 2 an dieser Stelle unbekannte Variabeln (die kennt das Skript nämlich nur innerhalb der Function) oder gar nichts. Beides passt nicht. Und eigentlich erscheint mir der Aufruf an dieser Stelle ohnehin komplett sinnlos!

                  Vielen Dank an alle
                  Ich habe es gelöst.
                  Das ist richtig. Ich habe es bei body falsch geschrieben. Die function exchange sollte nicht in body tag drin sein.
                  Zweite Fehler war Foto[i]=newImage();
                  Hier sollte ich so schreiben.Foto[i]=new Image();
                  newImage nicht zusammen.
                  Das war wirklich hammer. So ne Kleinigkeit und so lange dauert es.

                  nochmal ganz herzlichen Dank an alle
                  Viele Grüße

                  dobardan

                  1. Das war wirklich hammer. So ne Kleinigkeit und so lange dauert es.

                    Das liegt aber ganz eindeutig an dir. Wenn du einfach mein erstes Posting berücksigt hättest, wäre dir der Fehler von Anfang aufgefallen. Wenn du das immer beim programmieren berückstigst, dann hättest du den Fehler nicht mal gemacht.

                    Struppi.

              2. warum machst du nicht einfach eine Überprüfung, so wie ich sie dir bereits vorgeschlagen habe?
                Ok vielleicht verstehe ich hier was falsch. Ich erkläre jetzt gesamtes

                Das ist ja schön und gut, aber warum beantwortest du nicht meien Frage?
                Wie gesagt, dann würdest du vermutlich schnell selber darauf kommen, was falsch läuft und ich in Zukunft würdest du Fehler schnell entdecken. Warum weigerst du dich eine Überprüfung der Objekte einzubauen?

                Struppi.

  2. Ich verstehe das nicht, welche Object fehlt hier.

    Keine Ahnung, aber es wäre ein einfaches das rauszufinden. Eine Programmiergrundlage ist das prüfen von Werten, was du mißachtest:

    function exchange(number, fotonew){  
    if(typeof number == 'undefined' || typeof fotonew == 'undefined') throw TypeError('Falscher Parameter!');  
    if(!document.images[number])throw TypeError('HTMLImage existiert nicht #' + number);  
    if(!Foto[fotonew])throw TypeError('Bild existiert nicht #' + number);  
      
    document.images[number].src = Foto[fotonew].src;  
      
    }  
    
    

    Damit solltest du herrausfinden, was falsch läuft.

    Struppi.

  3. Hallo dobardan,

    nach dem dir Struppi und Felix schon geschrieben haben, wo der Fehler stecken könnte, noch ein TIPP on mir:

    In den meisten Fällen ist es eine schlechte Idee, Bilder über ihre Nummer anzusprechen. Du musst nur ein Bild (Logo, Dekografik, ...) einfügen, und schon stimmt nichts mehr. Ich würde den Bildern eine ID geben und sie über document.getElementById ansprechen oder, wenn die Struktur es zulässt, sie in einen div bündeln und dann über document.getElementsById("id des divs").getElementsByTagname("img") ansprechen.

    Gruß, Jürgen