Bildwechselscript bei Mausover - Probleme mit Array ?
Gandi
- javascript
Ich habe ein Problem mit einem selbst geschriebenen Grafik-Tausch Script bei überfahren eines Buttons.
Stichpunkt Mausover. Die Namen der Dateien sowie des beschreibenden Textes werden in Arrays geschrieben und beim Bildwechsel darraus ausgelesen. Local auf dem PC funktionierrt das im IE und Netscape einwandfrei. Sobald es aber auf den Server geladen wird geht nichts mehr.
Bin langsam mit meinem Latein am Ende. Vieleicht könnt ihr mir den Fehler nennen.
Über jeden Lösungsansatz bin ich dankbar. Anbei der Code.
Wer sich wundert warum Imagemapps - um die Lästigen Tooltips beim Alt-Tag zu vermeiden.
_____________________________________________________________________________________
<HTML><HEAD>
<TITLE>Menüfenster</TITLE>
<script language="JavaScript">
<!--
{
menu = new Array('starts','suche'');
text = new Array('Startseite','Suche');
pic_n = new Array();
pic_h = new Array();
for(i = 0; i <= menu.length-1; i++)
{
pic_n[i] = new Image();
alert('grafiken/' + menu[i] + '_n.gif');
pic_n[i].src = 'grafiken/' + menu[i] + '_n.gif';
pic_h[i] = new Image();
pic_h[i].src = 'grafiken/' + menu[i] + '_h.gif';
}
}
function ChangePic(i, AnAus)
{
if(AnAus==0){window.document.images[i+1].src=pic_n[i].src; alert(pic_n[i].src); window.status=''; return true;}
if(AnAus==1){window.document.images[i+1].src=pic_h[i].src; window.status='==> '+text[i]; return true;}
}
//-->
</script>
</HEAD>
<BODY BGCOLOR=#00416B LINK=#FF0000 ALINK=#FF0000 VLINK=#FF0000 MARGINWIDTH=0 MARGINHEIGHT=0 LEFTMARGIN=0 TOPMARGIN=0>
<BR>
<TABLE BORDER=0 WIDTH=160 HEIGHT=80%>
<TR ALIGN=CENTER valign=TOP><TD>
<A HREF="http://www.test.it" target="_top"><IMG SRC="grafiken/test.gif" ALT="Test" BORDER=0 WIDTH=130 HEIGHT=100></A>
<BR><BR>
<IMG SRC="grafiken/starts_n.gif" ALT="Startseite" WIDTH=120 HEIGHT=18 BORDER=0 USEMAP="#Mappe0">
<MAP NAME = "Mappe0"><AREA SHAPE = RECT COORDS ="0,0,120,18" HREF ="start.html" TARGET="haupt" ONMOUSEOVER="ChangePic(0,1); return true;" ONMOUSEOUT="ChangePic(0,0); return true;"></MAP>
<BR><BR>
<IMG SRC="grafiken/suche_n.gif" ALT="Suchen" WIDTH=120 HEIGHT=18 BORDER=0 USEMAP="#Mappe1">
<MAP NAME = "Mappe1"><AREA SHAPE = RECT COORDS ="0,0,120,18" HREF ="suchen.htm" TARGET="haupt" ONMOUSEOVER="ChangePic(1,1); return true;" ONMOUSEOUT="ChangePic(1,0); return true;"></MAP>
<BR>
</TD></TR>
</TABLE>
</BODY></HTML>
Hi,
Wer sich wundert warum Imagemapps - um die Lästigen Tooltips beim Alt-Tag zu vermeiden.
Naja ob die lästig sind kann man sich drüber streiten. du müßtest sie auch wegkriegen, wenn du alt="" machst.
<script language="JavaScript">
<!--
{
»» menu = new Array('starts','suche'');
»» text = new Array('Startseite','Suche');
»» pic_n = new Array();
»» pic_h = new Array();
»» for(i = 0; i <= menu.length-1; i++)
»» {
pic_n[i] = new Image();
alert('grafiken/' + menu[i] + '_n.gif');
pic_n[i].src = 'grafiken/' + menu[i] + '_n.gif';
pic_h[i] = new Image();
pic_h[i].src = 'grafiken/' + menu[i] + '_h.gif';
»» }
}
function ChangePic(i, AnAus)
{
Hier ist ein :
if(!document.images) return true;
ganz nett.
»» if(AnAus==0){window.document.images[i+1].src=pic_n[i].src; alert(pic_n[i].src); window.status=''; return true;}
»» if(AnAus==1){window.document.images[i+1].src=pic_h[i].src; window.status='==> '+text[i]; return true;}
}
aber soweit müte es stimmen.
<BODY BGCOLOR=#00416B LINK=#FF0000 ALINK=#FF0000 VLINK=#FF0000 MARGINWIDTH=0 MARGINHEIGHT=0 LEFTMARGIN=0 TOPMARGIN=0>
<BR>
<TABLE BORDER=0 WIDTH=160 HEIGHT=80%>
<TR ALIGN=CENTER valign=TOP><TD>
<A HREF="http://www.test.it" target="_top"><IMG SRC="grafiken/test.gif" ALT="Test" BORDER=0 WIDTH=130 HEIGHT=100></A>
<BR><BR>
<IMG SRC="grafiken/starts_n.gif" ALT="Startseite" WIDTH=120 HEIGHT=18 BORDER=0 USEMAP="#Mappe0">
<MAP NAME = "Mappe0"><AREA SHAPE = RECT COORDS ="0,0,120,18" HREF ="start.html" TARGET="haupt" ONMOUSEOVER="ChangePic(0,1); return true;" ONMOUSEOUT="ChangePic(0,0); return true;"></MAP>
ONMOUSEOVER="return ChangePic(0,1);" reicht.
Also wenn der Pfad zu den Grafiken stimmt müßte das Skript eigentlich Funktionieren.
Was heißt : "Sobald es aber auf den Server geladen wird geht nichts mehr." kriegst du eine Fehlermeldung ?
Stimmt Groß- und Kleinschreibung, der Dateinamen ? (Server==Linux ?)
Struppi.
Wer sich wundert warum Imagemapps - um die Lästigen Tooltips beim Alt-Tag zu vermeiden.
Naja ob die lästig sind kann man sich drüber streiten. du müßtest sie auch wegkriegen, wenn du alt="" machst.
Falsch ist ein Trick hierdurch wird VOR dem laden des Bildes der Alternativtext angezeigt aber die Tooltips vermieden.
Wenn ich alt="" entfällt auch die Anzeige des Alternativtextes.
Hier ist ein :
if(!document.images) return true;
ganz nett.
Was bewirkt " if(!document.images) return true; " ist ! ein NOT ?
Prüfst du damit ob keine Bilder vorhanden sind und gibst dann wahr zurück ? Müßte dann doch "false" heißen oder ?
Also wenn der Pfad zu den Grafiken stimmt müßte das Skript eigentlich Funktionieren.
Pfade stimmen deshalb waren die Alert-Tags im Script? Um die Pfade zu überprüfen.
Stimmt Groß- und Kleinschreibung, der Dateinamen ? (Server==Linux ?)
Stimmt peinlich genau.
Was heißt : "Sobald es aber auf den Server geladen wird geht nichts mehr." kriegst du eine Fehlermeldung ?
Keine Fehlermeldung in der Statuszeile wird zwar geladen ( Eigentlich sollten die Bilder ja schon vorgeladen sein),
aber es wird kein Bild ausgewechselt.
Struppi.
Danke für die Mühe.
PS: ich habs mal den Link hinzugefügt damit ihr euch ein Bild davon machen könnt. Wenn der Server nicht streickt.
Wer sich wundert warum Imagemapps - um die Lästigen Tooltips beim Alt-Tag zu vermeiden.
Naja ob die lästig sind kann man sich drüber streiten. du müßtest sie auch wegkriegen, wenn du alt="" machst.Falsch ist ein Trick hierdurch wird VOR dem laden des Bildes der Alternativtext angezeigt aber die Tooltips vermieden.
Wenn ich alt="" entfällt auch die Anzeige des Alternativtextes.Hier ist ein :
if(!document.images) return true;
ganz nett.Was bewirkt " if(!document.images) return true; " ist ! ein NOT ?
Prüfst du damit ob keine Bilder vorhanden sind und gibst dann wahr zurück ? Müßte dann doch "false" heißen oder ?
if(!document.images) alert("der browser kennt document.images nicht");
if(document.images) alert("der browser kennt document.images");
var test = 0;
if(test) alert("diese meldung wird nicht angezeigt");
if(!test) alert("diese meldung wird angezeigt");
test = 1;
if(!test) alert("diese meldung wird nicht angezeigt");
if(test) alert("diese meldung wird angezeigt");
if(test2) alert("diese meldung wird nicht angezeigt");
var test2 = "isotoxin";
if(test2) alert("diese meldung wird angezeigt");
if(!test2 == "isotoxin" && "aa" == "aa") alert("diese meldung wird nicht angezeigt");
if(test2 != "isotoxin") alert("diese meldung wird nicht angezeigt");
if(!test2 != "isotoxin" && "aa" == "aa") alert("diese meldung wird angezeigt");
if(!test2 != "isotoxin" && !"aa" == "aa") alert("diese meldung wird nicht angezeigt");
ja, ein "!" zu beginn kehrt das darauf folgende um!
Also wenn der Pfad zu den Grafiken stimmt müßte das Skript eigentlich Funktionieren.
Pfade stimmen deshalb waren die Alert-Tags im Script? Um die Pfade zu überprüfen.
Stimmt Groß- und Kleinschreibung, der Dateinamen ? (Server==Linux ?)
Stimmt peinlich genau.
Was heißt : "Sobald es aber auf den Server geladen wird geht nichts mehr." kriegst du eine Fehlermeldung ?
Keine Fehlermeldung in der Statuszeile wird zwar geladen ( Eigentlich sollten die Bilder ja schon vorgeladen sein),
aber es wird kein Bild ausgewechselt.Struppi.
Danke für die Mühe.PS: ich habs mal den Link hinzugefügt damit ihr euch ein Bild davon machen könnt. Wenn der Server nicht streickt.
Hi,
Hier ist ein :
if(!document.images) return true;
ganz nett.Was bewirkt " if(!document.images) return true; " ist ! ein NOT ?
Prüfst du damit ob keine Bilder vorhanden sind und gibst dann wahr zurück ? Müßte dann doch "false" heißen oder ?
! ist tatstächlich ein NOT.
document.images ist das Array, das die Bilder einer Seite enthält. Auf älteren Browsern (Ich persönlich kenne nur noch den IE 3.0) gab's noch keine Images. D.h. er würde, wenn die Zeile nicht drin wäre einen Fehler melden (Wobei den Status kann er trotzdem).
und das return true kann genauso return false heissen, da in diesem Falle der return Wert keine Bedeutung spielt. Da er an onmouseover geht und danach eh nix mehr passiert.
Sowas kann aber zum beispiel bei einem onClick eine Rolle spielen (z.B. <A HREF="xyz.htm" ONCLICK="function();">) gibt die function ein false zurück wird der Link nicht angesprungen, bei einem true schon.
Dein Server scheint wirklich nicht leicht zu erreichen.
Aber was mir noch einfällt, ist wenn es ein kostenloser Server ist wird eventuell ein Werbebannner oder ein Frame eingebaut und deine Aufrufe sind für solch einen Fall nicht gewappnet.
1.) refernezierst du die Bilder hart mit einer Nummer (onmouseover=ChangePic(0,0);)
hier wäre eine Bildname sinnvoller:
in der Funktion: document.images[name].src=...
das Bild <img name="xy1">
2.) in der Funktion ChangePic:
window.document.images[xx], ich bin mir nicht sicher, was da passiert, wenn du ein Frameset hast (auch ungewollt). Auf jeden Fall reich ein document.images[xx] um die Bilder im aktuellen document anzusprechen, was du ja auch willst.
Vielleicht hilft's.
Struppi.
Hi,
mittlerweile bin ich durchgekommen.
Wo sind die xxx_f.gif Grafiken ? Die sind nicht auf dem Server.
Außerdem werd' ich mit Fehlermeldungen zugeschissen (liegt daran, dass die Seite sowieso nicht 3'er Borwser konform ist, insofern kannste dir auch das if(!document.images) sparen.)
Struppi.