Javascript: Ne Art Werbebanner
jb 26.01.2005 - 09:54 558 7
jb
Here to stay
|
Hab auf meiner Seite ne Art Werbebanner, bei dem nach einer bestimmten Zeit das Bild und der dort hinterlegte Link ausgetauscht werden, das Ganze rennt in ner Endlosschleife durch. Unter dem IE funktioniert alles wunderbar, nur unter Firefox wechselt das Bild und der Link nicht und bekomm ich ne Fehlermeldung wenn ich mir das in der Javascript-Konsole ansehe. Die Fehlermeldung besagt, daß das Objekt, das geändert werden soll (in dem Fall der Link) nicht definiert ist. Hier die entsprechenden Zeilen aus meinem Script: <a name="Werbung" href="http://www.xyz.at" target="_blank"><img name="Werbung_Bild" src="bilder/banner/xyz.jpg" border="0" align="center" alt="http://www.xyz.at">
Dann weiter unten im JS-Bereich:
Werbung_Bild.src = b[i].src; Werbung.href = h[i]; Werbung_Bild.alt= h[i]; Bei der Zeile Werbung.href=h[i]; wird der Fehler angezeigt. Wie definiere ich das Objekt jetzt richtig?
Bearbeitet von jb am 26.01.2005, 09:57
|
watchout
Legendundead
|
Was sollen wir dir jetzt anhand von 3 Zeilen Code sagen?
Was ist b, was is h, woher kommt i, und was is es. wo hast du werbung_bild definiert, wo werbung,... sind nur ein paar fragen...
|
badbuthappy
Bloody Newbie
|
oder hast du im firefox einfach javascript deaktiviert bzw beschränkt.. gibt ja die möglichkeit. Oder die firewall zu hart eingestellt das die so sachen gar net erlaubt...
wenns im IE geht und im firefox nicht gibz ja mehr möglichkeiten..
|
CROWLER
Powerbunny
|
Was sollen wir dir jetzt anhand von 3 Zeilen Code sagen?
Was ist b, was is h, woher kommt i, und was is es. wo hast du werbung_bild definiert, wo werbung,... sind nur ein paar fragen... lol poste doch einfach den ganzen code aus dem du das rauskopiert hast (böse annahme ich weisz)
|
atrox
in fairy dust... I trust!
|
ie verwechselt bei einigen gelegenheiten und einigen versionen auch gerne id und name.
korrekter weise solltest du ein getElementByID() verwenden, getElementByName() geht auch, ist aber im zweifel nicht eindeutig.
|
jb
Here to stay
|
So, hier mal das ganze Script, etwas gekürzt (normalerweise sinds mehr Bilderm aber zum Verständnis reichen auch 3 denk ich mal). Im Array b wird die Bild-URL gespeichert, im Array h der Link. i ist einfach nur ein Schleifenzähler, sieht man aber unten alles. Javascript darf eigentlich so weit alles, hab da nix eingeschränkt. <a href="http://www.xyz.com" target="_blank" name="Werbung"><img name="Werbung_Bild" src="bilder/xyz.jpg" border="0" align="center" alt="http://www.xyz.com"></a>
<script language="JavaScript"> <!--
var b = new Array(); var h = new Array(); var timeout=4000; b[0] = new Image(); b[0].src="bilder/xyz.jpg"; h[0] = "http://www.xyz.com"; b[1] = new Image(); b[1].src="bilder/abc.jpg"; h[1] = "http://www.abc.at"; b[2] = new Image(); b[2].src="bilder/def.jpg"; h[2] = "http://www.def.at";
var i = 0;
function Animation() { with(window) { if(i > 2) i = 0; Werbung_Bild.src = b[i].src; Werbung.href = h[i]; Werbung_Bild.alt= h[i]; i = i + 1; window.setTimeout("Animation()", timeout); } } window.setTimeout("Animation()", timeout);
//--> </script>
|
watchout
Legendundead
|
Ist auch klar warum. Du nimmst an, dass wenn du einem Element den Namen "Werbung" gibst, es im JavaScript eine Variable "Werbung" gibt, die dann dieses repräsentiert. Nur ist das nicht so.
Selbst wenn dem so wäre, dann müsste aber die Variable "Werbung" ein Array sein, denn wie Atrox schon geschrieben hat ist ein "name" nicht eindeutig in HTML, nur eine "id".
Also musst du dir erst das HTML-Element-Objekt per "getElementbyId()" oder "getElementByName()" holen. Ausreichende Referenz sollte dir hiezu selfhtml bieten.
|
jb
Here to stay
|
OK, werd mir das mal anschaun, danke für den Tip! Der IE ist aber scheinbar schleißig genug programmiert, damit es funktioniert
|