Nils: 2 Fenster und Imagewechsel

Hallo

Aus einem Fenster H1 öffne ich zwei weitere kleine Fenster K1 und K2.
In K1 und K2 ist jeweils ein Image, das beim anklicken sein Image
UND das Image des anderen kleinen Fensters ändern soll.
Dazu rufe ich in dem kleinen Fenster eine Funktion aus H1 auf,
die den Bildwechsel machen soll:

K1/K2:
opener.bildwechsel(InWelchemFenster, InWelchesBild);

H1:
bildwechsel(Fenster, Bild)
{
  Fenster.document.images[0].src = Fenster.Bild.src;
}

Und das funktioniert nicht.
Der Explorer meldet: "Fehler: 'document.images' ist kein Objekt"
Ich habe auch schon versucht in bildwechsel() ein Funktion aus dem
jeweiligem kleinen Fenster aufzurufen, die das Image dann ändert.

H1:
bildwechsel(Fenster, Bild)
{
  Fenster.lokalbildwechsel(Bild);
}

Aber diese Funktion ruft er erst garnicht auf.
Explorer: "Fehler: Objekt unterstützt diese Methode nicht"

Was mache ich falsch?
Danke

Nils

  1. Mit welchen Parametern rufst Du denn die Funktionen auf?

    Das wäre gut zu wissen, das ganze Projekt zu sehen wäre noch besser.
    Ins Blaue hinein vermute ich, daß Du als Parameter die Namen der Variablen übergeben solltest, die die Fensterinstanzen enthalten, und das ganze mit Eval (fenstervariablenname+"document.images[0]= ... ";); aufrufen solltest.

    Man kann meist nicht einfach so Objekte übergeben und dann mittels Anhängen von .irgendwas() daraus den Aufruf einer Objektmethode machen.

    Wie dieses Prinzip ganz genau funktioniert, kann ich Dir aber leider auch nicht so genau sagen...
    Vielleicht meldet sich ja die Kompetenz zu Wort?

    Bio

  2. Hallo Nils,

    K1/K2:

    »»  opener.bildwechsel(InWelchemFenster, InWelchesBild);

    H1:

    »»  bildwechsel(Fenster, Bild)
    »»  {

    Fenster.document.images[0].src = Fenster.Bild.src;

    »»  }

    Dein Problem besteht darin, dass der Parameter Fenster nur eine lokale Variable (auf die Funktion beschränkte) ist. Die heißt zwar genauso, wie die, die die Fenster speichert, besitzt aber keinen Wert diesbezüglich.

    Probiere mal folgendes:
    opener.bildwechsel("K1", InWelchesBild);

    H1:
      bildwechsel(Fenster, Bild)
    {
      self[Fenster].document.images[0].src = self[Fenster].Bild.src;
    }

    Ist dort das Bild auch entsprechend vorgeladen?

    alternativ könntest du auch probieren:

    bildwechsel(Fenster, Bild)
    {

    if (Fenster=="K1") K1.document.images[0].src = K1.Bild.src;
    else K2.document.images[0].src = K2.Bild.src;

    }

    Viele Grüße

    Antje

    1. self[Fenster].document.images[0].src = self[Fenster].Bild.src;

      Danke Antje!

      Das war genau der Tip der mir gefehlt hat.
      Muß ich wohl in selfhtml überlesen haben.
      Kannst dir das Ergebnis ja mal anschauen, hab es probehalber mal auf meine HP:

      http://www.mryo.webprovider.com/memory/memory.html

      Danke auch an Bio.
      Gute Nacht

      Nils

      1. Hallo Nils,

        Das war genau der Tip der mir gefehlt hat.
        Muß ich wohl in selfhtml überlesen haben.

        nein hast du nicht. Der Trick stammt aus der JS-Newsgroup, die ich gelegentlich lese. http://x35.deja.com/getdoc.xp?AN=581926945&CONTEXT=952498594.1439957039&hitnum=2

        Interessant ist dieses Beispiel, was dort vorgestellt wurde:

        x = 'Streich'; self['mein'+7+'ter'+x] = 5; alert(mein7terStreich);

        Kannst dir das Ergebnis ja mal anschauen, hab es probehalber mal auf meine HP:

        Hübsch dein Memory, gefällt mir.

        Viele Grüße

        Antje