Sven: Fieses Problem, das nicht in diese eine Zeile paßt

Hallo zusammen!

Ganz doofes Problem:

Ich habe da ein Skript für eine Galerie, was soweit auch ganz wunderbar funktioniert, welches ich aber gerne erweitern würde und da urplötzlich an die Grenzen von Javascript gestoßen zu sein glaube. Aber im Detail:

Im Hauptfenster liegen die Thumbnails der Bilder. Klicke ich auf eines dieser Bilder, wird folgendes ausgeführt:

<a href="javascript:go('/img/sof2002_bild45.jpg',340,280,'Schönes Bild',0)"><IMG SRC="/thumb/sof2002_bild45.jpg" WIDTH="90" HEIGHT="67" BORDER="0"></A>

Erklärung: Erst kommt die Adresse, dann die Höhe und Breite des PopUps, in dem das Bild angezeigt werden soll, dann die Bildbeschreibung und zum Schluß noch eine "Kontrollzahl" (dazu gleich mehr). Das Bild wird jetzt in einem PopUp angezeigt, an das eine HTML-Datei vom Javascript mit Hilfe von document.write weitergegeben wird. Ist aber nix wildes, nur so'n bißchen optisches drumrum. In diesem PopUp sollen jetzt "Vor"- und "Zurück"-Buttons sein, damit man zwischen den Bildern auch blättern kann. Das Script ermittelt nämlich anhand der Bildnummer die Nummer der vorhergehenden, bzw. nachfolgenden Bildes, wenn die Kontrollnummer 0 ist. Das letzte Bild übergibt statt der 0 eine 1 an das Script und so springt man mit "Vor" automatisch zum ersten Bild, während dort dann die Nummer des letzten Bildes an das Script weitergegeben wird und man bei "Zurück" automatisch wieder beim letzten Bild landet. Alles wunderbar! Aber hier jetzt nach dem Vorgeplänkel endlich das Problem:

Die Bildbeschreibung! Da diese im <a href="">-Teil des Mutterfensters liegt und dort jedesmal an das Script mit übergeben wird, fehlt die natürlich, wenn ich in dem PopUp auf Vor oder Zurück klicke. Erst dachte ich: "Kein Problem!" Suchst Du eben nach der Nummer des Bildes und rufst den Befehl ferngesteuert auf. Aber das geht ja nicht, Javascript ja keine HTML-Files, sondern nur Variablen durchsuchen kann. ARGH!

Hat jemand vielleicht eine Idee, wie ich mein Problem lösen kann? Falls Euch das hilft, hier das komplette Script:

-------------------------------------------------
NewWindow = null;

function go(Picture,Breit,Hoch,Text,Firstlast)
{
xsize = Breit+35;// Zusatz für Rand rechts und links
ysize = Hoch+75; //Zusatz für Rand oben und unten - damit Button angezeit werden kann

ScreenWidth = screen.width;
ScreenHeight = screen.height;

xpos = (ScreenWidth/2)-(xsize/2);
ypos = (ScreenHeight/2)-(ysize/2);

var Bild = (Picture.lastIndexOf("_bild"))+5;
var JPG = Picture.lastIndexOf(".jpg");
var Name = Picture.lastIndexOf("_bild");

if (Firstlast != "0")
 if (Firstlast != "1") { var NummerNeu = Firstlast; }
  else var NummerNeu = "1";
 else var NummerNeu = Number(Picture.substring(Bild,JPG))+1;

var NameNeu = Picture.substring(0,Name);

alert(NameNeu + "_bild" + NummerNeu + ".jpg");

if (NewWindow != null)
     if (!NewWindow.closed)
       NewWindow.close();

NewWindow=window.open("","Picture","height="+ysize+",width="+xsize+",scrollbars=no,resizable=no,top="+ypos+",left="+xpos+"");
 NewWindow.document.write ( UND HIER STEHT DANN DER GANZE KRAM MIT DEM OPTISCHEN RAHMEN UND DEM BILD UND DEN NAVIGATIONSBUTTONS );
 NewWindow.document.close();
 NewWindow.focus();
}
<a href="javascript:opener.location.<img src='/img/galerie_back.gif' width=20 height=30 border=0 alt='Zurück'>
-------------------------------------------------

Bin für jeden Lösungsvorschlag dankbar! :-)

Viele Grüße,
Sven

  1. Aloha!

    <a href="javascript:go('/img/sof2002_bild45.jpg',340,280,'Schönes Bild',0)"><IMG SRC="/thumb/sof2002_bild45.jpg" WIDTH="90" HEIGHT="67" BORDER="0"></A>

    Erklärung: Erst kommt die Adresse, dann die Höhe und Breite des PopUps, in dem das Bild angezeigt werden soll, dann die Bildbeschreibung und zum Schluß noch eine "Kontrollzahl" (dazu gleich mehr).

    Die Kontrollzahl ist überflüssig, wenn du die Namen der anzuzeigenden Bilder in ein Array packst und im Prinzip nur die Arraynummer des Bildnamens übergibst.

    Dann kannst du anhand der Arraynummer feststellen, ob es ein vorheriges oder nachfolgendes Bild gibt. Ist dieser Index 0, dann gibts kein vorheriges Bild, sondern du musst am Ende neu anfangen. Ist der Index das Maximum der Elemente im Array, gibts kein nächstes Bild, sondern du musst am Anfang weitermachen.

    Die Bildbeschreibung! Da diese im <a href="">-Teil des Mutterfensters liegt und dort jedesmal an das Script mit übergeben wird, fehlt die natürlich, wenn ich in dem PopUp auf Vor oder Zurück klicke. Erst dachte ich: "Kein Problem!" Suchst Du eben nach der Nummer des Bildes und rufst den Befehl ferngesteuert auf. Aber das geht ja nicht, Javascript ja keine HTML-Files, sondern nur Variablen durchsuchen kann. ARGH!

    Eben. Mache eine ganz banale Arrayvariable auf, in der die Bildnamen drinstehen, und gut ist. Anhand dieser Information kannst du dann in den Bildern blättern. Und wenn du schlau bist, dann packst du die Größeninformation und die Beschreibung gleich mit ins Array (entweder ein zweidimensionales Array oder vier oder fünf Einzelarrays), dann kannst du diese Information auch noch mit verwursteln.

    - Sven Rautenberg