Timon Vielhaber: Problem mit Buttons

Hallo,
Ich habe ein Problem mit der Funktion onMouseover und OnMouseOut.
Ich habe auf meiner Homepage Buttons mit wechselnden Grafiken. Wenn ich jetzt aber daneben eine Grafik wie "new" oder so setzen will, dann passiert folgendes:
Sobald man einen Button verläßt, erscheint die Grafik, die eigentlich in dem Button erscheinen soll, in dem Platz der "new"-Grafik völlig woanders.

Wenn jemand Hilfe weiß oder näher interressiert an dem Problem ist, kann ich auch die Problemdatei mailen.

Danke im Voraus,

Timon Vielhaber

  1. Hi,

    Ich habe ein Problem mit der Funktion onMouseover und OnMouseOut.
    Ich habe auf meiner Homepage Buttons mit wechselnden Grafiken.

    also Grafiken, nicht Buttons (Formulare)? Das ist ein Riesenunterschied!

    Wenn ich jetzt aber daneben eine Grafik wie "new" oder so setzen will, dann passiert folgendes:
    Sobald man einen Button verläßt, erscheint die Grafik, die eigentlich in dem Button erscheinen soll, in dem Platz der "new"-Grafik völlig woanders.

    Wenn jemand Hilfe weiß oder näher interressiert an dem Problem ist, kann ich auch die Problemdatei mailen.

    Wie wäre es, wenn Du einfach die URL hier postest, oder evtl. ein paar der betreffenden Zeilen direkt, oder am besten beides? Ich kann mir so Dein Problem jedenfalls schwer vorstellen, und erfahrungsgemäß hilft es kaum, den Code mit der Post zu erhalten.

    Cheatah

  2. Hi!

    Ich habe ein Problem mit der Funktion onMouseover und OnMouseOut.

    Das kenne ich.. :-)

    Sobald man einen Button verläßt, erscheint die Grafik, die eigentlich in dem Button erscheinen soll, in dem Platz der "new"-Grafik völlig woanders.

    Diese Grafik erscheint bei onmouseover an der richtigen Stelle, aber beim onmouseout nicht? Dafür verbleibt beim onmouseout die onmouseover-Grafik auf der eigentlichen Stelle?
    In diesem Script arbeitest du vielleicht mit der Nummernverteilung auf einzelne Grafiken, oder?

    Wenn ja überprüfe dochmal bitte, ob die "Nummern" im Script vom onmouseover und onmouseout übereinstimmen. Denn wenn da nicht der Fall ist, passiert daß, was du gerade beschrieben hast.
    Ansonsten ziege uns doch mal bitte dieses Script samt HTML-Datei (oder am besten die URL dazu...)

    Gruß Benjamin

  3. Hallo Timon!

    Ich habe ein Problem mit der Funktion onMouseover und OnMouseOut.
    Ich habe auf meiner Homepage Buttons mit wechselnden Grafiken. Wenn ich jetzt aber daneben eine Grafik wie "new" oder so setzen will, dann passiert folgendes:
    Sobald man einen Button verläßt, erscheint die Grafik, die eigentlich in dem Button erscheinen soll, in dem Platz der "new"-Grafik völlig woanders.

    Du benutzt wahrscheinlich einen Script, in welchem die  Grafiken nach "index" und nicht nach "name" angesprochen werden.

    Der Browser "liest" die Grafiken in der Reihenfolge ihrer Referenzierung im Quelltext. Die erste Grafik erhält die Index-Nr. 0, die zweite 1, die dritte 2, usw...

    Wenn Du mal angenommen 5 Buttons referenziert hast, so haben diese die Index-Nummern 0 bis 4.

    Referenzierst Du eine neue, sechste Grafik unterhalb der Buttons, so erhält diese die Index-Nummer 5. Dein Script funktioniert noch...

    Plazierst Du die neue Grafik aber oberhalb der Buttons, so erhält die neue Grafik die Index-Nummer 0, und die Buttons die Nummer 1 bis 5: das Script funzt nicht mehr, wenn nicht die Zahlen entsprechend geändert werden.

    So wie Du Dein Problem schilderst, wird es so sein, wie es Benjamin erklärt hat. In der für onMouseOut zuständigen Funktion stimmen nach dem Einfügen der neuen Grafik die Index-Zahlen nicht mehr.

    Anzeigebeispiel - so sieht es aus<g>:

    http://atomic-eggs.com/pac/paf3.htm#A5

    Auf dieser Seite siehst Du den einzigen Bildwechsel dieser Page: meine wunderschöne Wenigkeit!

    Und jetzt schau mal im Quelltext:

    if (ok) {

    bild1 = new Image();    
    bild2 = new Image();  
      
    bild1.src = "pacnice.jpg";    
    bild2.src = "pacnicer.jpg";  
    

    }
    function Off (num) {
    if (ok) {
      
    if (num=="1") document.images[27].src=bild1.src;

    }  
    

    }
    function On (num) {
    if (ok) {

    if (num=="1") document.images[27].src=bild2.src;  
    
    }  
    

    "if (ok)" bezieht sich auf eine im Originalquelltext meiner Seite definierten Browserabfrage

    • für eine Bildwechselfunktion für eine Grafik benötigt man 2 Bilder: bild1 und bild2, die oben definiert werden (die 4 ersten Zeilen). In diesem Beispiel ist Bild1 (pacnice.jpg) der Normalzustand, und Bild2 (pacnicer.jpg) ist das Bild, welches bei onMouseOver erscheinen soll.

    • die Funktion "OFF" wird bei onMouseOut angesprochen, die Funktion "ON" bein onMouseOver

    • die Zahl "27" in der Zeile: if (num=="1") document.images[27].src=bild1.src;    bei der Funktion Off und  der entsprchenden Zeile bei der Funktion On bedeutet, daß die 28. Grafik im Quelltext (angefangen von 0, wie oben erklärt) durch den Bildwechsel ausgetauscht wird.

    Würde ich also auf die Idee kommen, oberhalb dieser 28. Grafik ein weiteres Bild einzubauen, müßte ich anstatt "27" nun "28" eingeben, denn alles verschiebt sich dann um eine Zahl, und mein schönes Photo ist nicht mehr die 28. sondern die 29. Grafik auf der Seite. Für die Indexierung ist dann Index 28, da ja, wie gesagt, von "0" an gezählt wird.

    Ich hoffe, ich konnte es einigermaßen 'rüberbringen, sonst melde Dich bitte nochmals... aber bitte hier, nicht per E-Mail (anderen Leuten interessiert es vielleicht auch), OK?

    Bis danndann

    PAF (patrickausfrankfurt)

  4. Hallo Timon,

    ...Funktion onMouseover und OnMouseOut.
    ...eine Grafik wie "new" oder so setzen will, ...

    mir sind die Zusammenhänge nicht klar, aber den Bezeichner
    "new"  würde ich vermeiden weil er ein reserviertes Wort ist.
    Das kann, muß aber nicht, zu Fehlinterpretationen führen.
    Wenn new aber ein neues Array deklariert, sollte es nicht in
    den benutzten Zahlenbereich fallen und Deinen Effekt auch
    nicht verursachen. Bildwechsel sollte aber auch nicht erfolgen.

    Sobald man einen Button verläßt, erscheint die Grafik, ...
    ...  in dem Platz der "new"-Grafik völlig woanders.

    So ganz klar ist mir Deine Beschreibung nicht, erinnert mich aber
    an einen Effekt den ich schon mal gesehen habe.
    Wenn die Seite aufgebaut wird, erscheint das im IMG-Tag definierte
    Bild an der richtigen Stelle. Kommt man mit dem Mauszeiger darauf,
    oder geht wieder weg, dann erscheint das auszuwechselnde Bild an einem
    Ort mit völlig anderen Bildkoordinaten, an einem Ort wo gar kein
    Bild definiert ist. Das Bild selbst ist richtig, die Bildkoordinaten
    jedoch nicht.

    PAFs Erklärung würde ja darauf hinauslaufen, daß das Bild anstelle
    eines anderen ausgewechselt würde. Meist verzerrt.
    Auch Benjamins Hinweis sollte auf eine Bilder'verwechslung'
    hinauslaufen.

    Mir ist so, als hätte ich 'meinen' Effekt vorzugsweise mit
    älteren Netsies beobachtet und bringe ihn mit unsauber geschriebenen
    Tabellen und DIVs in Verbindung. Schau das mal durch.
    Wenn ich Dich richtig verstehe, dann liegt das Problem aber
    eher im Scriptbereich, evtl. in der Funktion zum Bildwechsel.
    Irgendwie veranlaßt Du doch den Browser dazu, falsche oder
    garkeine Bildkoordinaten für die Operation zu haben.
    Was ist, wenn Du beim Seitenaufbau n Bilder definiert hast,
    und nun das n+1te auswechselst. Das sollte vermutlich zwar zu einer
    Fehlermeldung führen, aber korrekte Bildkoordinaten kannst Du dafür
    auch nicht voraussetzen.

    Achso, es gibt da noch mindestens einen Effekt.
    Manche Browser haben anscheinend Probleme mit Zeitverzögerungen.
    Dieses trifft vor Allem mit Frames auf.
    Stell Dir vor Du rufst aus einem Frame den Bildwechsel in einem
    anderen Frame auf, und dieser wechselt Dir Dein aufrufendes Frame
    aus. Wenn der Browser nun vom Bildwechsel zurückkommt, dann ist da
    ein anderes Frame. Im schlimmsten Fall schmiert Dir die Kiste ab.
    Browser scheinen so geschrieben zu sein, daß bestimmte Operationen
    quasiparallel ablaufen, so nach dem Motto, mach schon mal weiter
    mit der nächsten Aktion bevor die erste abgeschlossen ist.
    Dieses soll die Gesamtgeschwindigkeit erhöhen.
    Beobachten kannst Du das ja beim Seitenaufbau. Der erfolgt schon
    sobald etwas da ist (excl. Tabellen), die Bilder werden später
    reingemalt. Vorausgesetzt, Du hast die Bildabmessungen mit-
    geliefert (NS). Der IE ist sogar bereit den Seitenaufbau
    dann irgendwann nachträglich nochmal neu anzupassen.

    Tja, und Eines hab' ich hier im Forum auch schon mal gelesen:
    es soll nicht unwichtig sein was man mit dem 'return' macht.
    Irgendwie beeinflußt man damit die Art und Weise wie der
    Browser nach dem Funktionsaufruf wieder weitermacht.
    Such mal im Archiv.

    Klaus