Forum Doku Wiki Blog

Forumsarchiv 2008, März
Funktion funktioniert mit FF nur bei Mouseover/Mouseout-Aufruf

archivierte Beiträge lesen

  1. (JAVASCRIPT) Funktion funktioniert mit FF nur bei Mouseover/Mouseout-Aufruf von Robert, 02. 03. 2008, 14:33

Funktion funktioniert mit FF nur bei Mouseover/Mouseout-Aufruf

Der folgende Beitrag wurde am 02. 03. 2008, 14:33 Uhr von Robert veröffentlicht.

Hallo,

folgender Code:


w={y:null}

function showMe(id)
{
if(w.y!=null){w.y.style.display="none";}
w.y=document.getElementById(id);
if(w.y!=null){w.y.style.display="block";}
}

Wenn ich die Funtion im Code mit showMe(1) aufrufe, dann passiert in Firefox (Version 2.0.0.11) nichts (obwohl id = 1 ist, bleibt w.y = null). Bei den anderen Browsern (Opera 9.25, IE 6.0) funktioniert dies aber einwandfrei. Erst wenn ich die Funktion mittels ... onMouseOut="showMe(1);" ... aufrufe, funktioniert sie auch in Firefox.

Ich stehe vor einem Rätsel. Ist das ein Bug von Firefox oder habe ich irgendeinen Fehler im Code?

Funktion funktioniert mit FF nur bei Mouseover/Mouseout-Aufruf

Der folgende Beitrag wurde am 02. 03. 2008, 14:48 Uhr von plan_B veröffentlicht.

Hallo,

> Ich stehe vor einem Rätsel. Ist das ein Bug von Firefox oder habe ich irgendeinen Fehler im Code?


valide Ids beginnen mit einem Buchstaben. du scheinst einem Element die id="1" gegeben zu haben

Gruß plan_B
--
     *®*´¯`·.¸¸.·

Funktion funktioniert mit FF nur bei Mouseover/Mouseout-Aufruf

Der folgende Beitrag wurde am 02. 03. 2008, 15:06 Uhr von Robert veröffentlicht.

Hallo,

> valide Ids beginnen mit einem Buchstaben. du scheinst einem Element die id="1" gegeben zu haben

Leider liegt es nicht daran. Ich habe gerade die Eins durch durch ein Wort ersetzt, das beschriebene Verhalten von Firefox bleibt aber. Wirklich sehr merkwürdig.

Funktion funktioniert mit FF nur bei Mouseover/Mouseout-Aufruf

Der folgende Beitrag wurde am 02. 03. 2008, 15:18 Uhr von plan_B veröffentlicht.

Hallo,

ohne den zugehörigen HTML-Code weiss ich auch keine bessere Erklärung. Überprüfe doch mal deine Seite mit dem Validator.

wie deine Funktion genau funktionieren soll, ist mir auch nicht klar. Wahrscheinlich werden die mouse-Events in einer anderen Reihenfolge gefeuert, als du annimmst.

Ein Schnipsel HTML wäre hilfreich ...

Gruß plan_B
--
     *®*´¯`·.¸¸.·

Funktion funktioniert mit FF nur bei Mouseover/Mouseout-Aufruf

Der folgende Beitrag wurde am 02. 03. 2008, 15:45 Uhr von Robert veröffentlicht.

Hallo,

> Ein Schnipsel HTML wäre hilfreich ...

HTML:
---

<span id="1">Anzuzeigender Text</span>

<a href="javascript:goTo(link)" onMouseOver="showMe(1)" onMouseOut="showMe(w.f)"
---

JavaScript:
---

w.f=1;

w={y:null,f:null}
function showMe(id)
{
if(w.y!=null){w.y.style.display="none";}
w.y=document.getElementById(id);
if(w.y!=null){w.y.style.display="block";}
}

showMe(w.f)
---

Wie gesagt, beim Aufruf über MouseOver-/MouseOut funktioniert alles wie es soll. Nur wenn ich showMe(w.f) aufrufe, passiert in FF nichts. (Ich kann auch showMe(1) aufrufen, der Effekt bleibt gleich - es passiert nichts.)

Funktion funktioniert mit FF nur bei Mouseover/Mouseout-Aufruf

Der folgende Beitrag wurde am 02. 03. 2008, 16:42 Uhr von plan_B veröffentlicht.

Hallo,

es ist wenig sinnvoll, mit invalidem HTML javascript zu testen.

> JavaScript:
> ---
>
> w.f=1;
  diese Anweisung dürfte nicht erkannt werden, komischerweise meldet nur Opera hier einen Fehler
>
> w={y:null,f:null}


statt dessen:

 w={y:null,f:'span1'};



> function showMe(id)
> { ... }
>
> showMe(w.f)


geht auch im FF ( span hat display:block )
wenn zu diesem Zeitpunkt schon ein Element mit der entsprechenden id existiert, also der HTML-block vor dem Scriptblock geladen wurde.

wahrscheinlich habe ich aber deine Konstruktion nicht durchschaut ..

Gruß plan_B
--
     *®*´¯`·.¸¸.·

Funktion funktioniert mit FF nur bei Mouseover/Mouseout-Aufruf

Der folgende Beitrag wurde am 02. 03. 2008, 18:50 Uhr von Robert veröffentlicht.

Hallo,

> es ist wenig sinnvoll, mit invalidem HTML javascript zu testen.

Sorry, aber eigentlich gibt es bei keinen richtigen HTML-Code. Die Seiten werden alle dynamisch per Java-Script erzeugt (mit document.writeln() ).

Scheinbar ist es bei Firefox so, dass erst die komplette HTML-Seite komplett geschrieben sein muss, damit der Befehl w.f=document.getElementById(id); greift. Und mit geschrieben meine ich, dass die Ausführung von JavaScript beendet sein muss. Es bringt nämlich auch nichts, wenn ich den Befehl showMe(w.f) als allerletztes Ausführen lasse.

Interessanterweise kann ich dies mit window.setTimeout("showMe(w.f)",0); umgehen, da der Timeout-Befehl scheinbar erst dann ausgeführt wird, nachdem der komplette HTML-Code geschrieben wurde. Ich vermute dies, weil ich den Timeout-Befehl auch in die allererste Zeile von JavaScript schreiben kann. Obwohl zu diesem Zeitpunkt noch gar kein HTML-Code vorhanden ist, wird showMe(w.f) korrekt ausgeführt.

> wahrscheinlich habe ich aber deine Konstruktion nicht durchschaut ..

Die Konstruktion ist ein Hover-Effekt für Links. Je nachdem über welchen Link man die Maus bewegt, wird ein Text in einer separaten Tabelle angeigt. Wird ein Link angeklickt, bleibt der dazugehörige Text permanent dort stehen. Fährt man dann mit der Maus wieder über einen Link, wird der permanente Text ausgeblendet und ein anderer Text eingeblendet. Verlässt die Maus den Link wieder, verschwindet der Text und der permanente Text wird wieder angezeigt.

© 1998-2013 SELFHTMLImpressumSoftware: Classic Forum 3.4