Hallo!
Nachdem ich mich 2 Tage durch's Forum gesucht und gelesen habe, wende ich mich nun mal direkt mit meinem Problem an euch, in der Hoffnung, dass ihr mir helfen könnt.
Folgender Aufbau:
In einem Array sind 7 Bilder hinterlegt.
Bei Mouseover über ein Image erscheint ein bisher unsichtbares Blockelement (div) - bei Mouseout verschwindet es wieder. In diesem Blockelement wird eines dieser 7 Bilder aus dem Array zufallsgesteuert angezeigt. Die Zufallssteuerung liegt in einer Funktion, die ebenfalls beim Mouseover über das Image (für den Bildwechsel ohne Reload der ganzen Seite) ausgeführt wird.
Soweit so gut.
Dann dachte ich mir: hey, jetzt zu den wechselnden Bildern ein ebenfalls wechselnder Text im selben Blockelement wär' doch nicht schlecht. Also kurzerhand ein zweites Array mit Texten erstellt und dann versucht, in dem Blockelement mit document.write einen dieser Array-Texte mit derselben zufallsberechneten Variable anzeigen zu lassen.
Ergebnis: kein Text.
1. Frage: obwohl ich die Variable vor der Funktion deklariert habe, scheint die Variable nach Beendigung der Zufallsberechnungsfunktion keinen Wert zu enthalten. Woran liegt das?
Ok. Habe weiter probiert und mit einer zweiten Variable dieselbe Zufallsberechnung ausgeführt (dann eben kein passender Text zum Bild sondern ein wahlfreier Text - man ist ja bereit, Abstriche zu machen). In dieselbe Funktion ein document.write und den Funktionaufruf an die entsprechende Stelle im Blockelement gesetzt.
Ergebnis: Text ist da, ändert sich aber nur beim Neuladen der Seite und nicht, jedesmal, wenn es zur Anzeige des Blockelements kommt. Heißt: Bild wechselt ohne Reload der Seite bei jedem Neuanzeigen des Blockelements, Text bleibt gleich. Blöd.
2. Frage: Wieso wird die Berechnung der Zufalltext-Variable beim Reload durchgeführt (obwohl die Funktion nicht per onload aufgerufen wird!) und nicht beim Durchlaufen des Blockelements, in dem sie eingebunden ist?
Habe mal mit der alert-Funktion den Inhalt der Variablen geprüft und festgestellt: beim Reload durchläuft es die Zufalltext-Funktion, nicht aber die Zufallbild-Funktion (wie gesagt - beides nicht im body-tag per onload aufgerufen!). Beim Überfahren des Images wird die Zufallbild-Funktion ausgeführt, das alert für die Zufalltext-Funktion wird jedoch nicht angezeigt (wird da die Funktion etwa gar nicht aufgerufen?) - der Text wird aber geschrieben (also doch Funktionsaufruf? - document.write steht ja dadrin)
Bin echt ratlos! Ich hoffe, ihr werdet da einigermaßen schlau draus.
Sorry, dass es so lang geworden ist.
Hier noch die relevanten Code-Bestandteile:
Ja, dann erstmal vielen Dank für's lesen und ich hoffe, dass mir jemand etwas dazu sagen kann. Ach ja, und: ich bin Javascript-Laie
Arachne
Nachdem ich mich 2 Tage durch's Forum gesucht und gelesen habe, wende ich mich nun mal direkt mit meinem Problem an euch, in der Hoffnung, dass ihr mir helfen könnt.
Folgender Aufbau:
In einem Array sind 7 Bilder hinterlegt.
Bei Mouseover über ein Image erscheint ein bisher unsichtbares Blockelement (div) - bei Mouseout verschwindet es wieder. In diesem Blockelement wird eines dieser 7 Bilder aus dem Array zufallsgesteuert angezeigt. Die Zufallssteuerung liegt in einer Funktion, die ebenfalls beim Mouseover über das Image (für den Bildwechsel ohne Reload der ganzen Seite) ausgeführt wird.
Soweit so gut.
Dann dachte ich mir: hey, jetzt zu den wechselnden Bildern ein ebenfalls wechselnder Text im selben Blockelement wär' doch nicht schlecht. Also kurzerhand ein zweites Array mit Texten erstellt und dann versucht, in dem Blockelement mit document.write einen dieser Array-Texte mit derselben zufallsberechneten Variable anzeigen zu lassen.
Ergebnis: kein Text.
1. Frage: obwohl ich die Variable vor der Funktion deklariert habe, scheint die Variable nach Beendigung der Zufallsberechnungsfunktion keinen Wert zu enthalten. Woran liegt das?
Ok. Habe weiter probiert und mit einer zweiten Variable dieselbe Zufallsberechnung ausgeführt (dann eben kein passender Text zum Bild sondern ein wahlfreier Text - man ist ja bereit, Abstriche zu machen). In dieselbe Funktion ein document.write und den Funktionaufruf an die entsprechende Stelle im Blockelement gesetzt.
Ergebnis: Text ist da, ändert sich aber nur beim Neuladen der Seite und nicht, jedesmal, wenn es zur Anzeige des Blockelements kommt. Heißt: Bild wechselt ohne Reload der Seite bei jedem Neuanzeigen des Blockelements, Text bleibt gleich. Blöd.
2. Frage: Wieso wird die Berechnung der Zufalltext-Variable beim Reload durchgeführt (obwohl die Funktion nicht per onload aufgerufen wird!) und nicht beim Durchlaufen des Blockelements, in dem sie eingebunden ist?
Habe mal mit der alert-Funktion den Inhalt der Variablen geprüft und festgestellt: beim Reload durchläuft es die Zufalltext-Funktion, nicht aber die Zufallbild-Funktion (wie gesagt - beides nicht im body-tag per onload aufgerufen!). Beim Überfahren des Images wird die Zufallbild-Funktion ausgeführt, das alert für die Zufalltext-Funktion wird jedoch nicht angezeigt (wird da die Funktion etwa gar nicht aufgerufen?) - der Text wird aber geschrieben (also doch Funktionsaufruf? - document.write steht ja dadrin)
Bin echt ratlos! Ich hoffe, ihr werdet da einigermaßen schlau draus.
Sorry, dass es so lang geworden ist.
Hier noch die relevanten Code-Bestandteile:
Code:
<head>
<style type="text/css">
<!--
div#ane { position:static; width:100%; height:320px; z-index:8; display:none; }
//-->
</style>
<script language="JavaScript">
<!--
aImgs = new Array();
aImgs[0] = 'bild1.jpg';
aImgs[1] = 'bild2.jpg';
aImgs[2] = 'bild3.jpg';
aImgs[3] = 'bild4.jpg';
aImgs[4] = 'bild5.jpg';
aImgs[5] = 'bild6.jpg';
aImgs[6] = 'bild7.jpg';
iIndex = 0;
function zufallbild()
{
iIndex = Math.round(Math.random() * (aImgs.length - 1));
document.bild.src = aImgs[iIndex] ;
}
aText = new Array();
aText[0] = "Text 1";
aText[1] = "Text 2;
aText[2] = "Text 3;
aText[3] = "Text 4;
aText[4] = "Text 5;
aText[5] = "Text 6;
aText[6] = "Text 7;
tIndex = 0;
function zufalltext()
{
tIndex = Math.round(Math.random() * (aText.length - 1));
document.write(aText[tIndex]);
}
//-->
</script>
</head>
<body>
<div id="ane">
<img src="' + aImgs[iIndex] + '" width="225" height="300" border="0" alt="" name="bild">
<script language="JavaScript">
<!--
zufalltext();
//-->
</script>
</div>
<img src="xy.jpg" onMouseover="zufallbild(); document.getElementById('ane').style.display='block';" onMouseout="document.getElementById('ane').style.display='none';" width="120" height="81" border="0" alt="">
Ja, dann erstmal vielen Dank für's lesen und ich hoffe, dass mir jemand etwas dazu sagen kann. Ach ja, und: ich bin Javascript-Laie
Arachne