WSF-Selb: Variable mit Funktion in .JS-Datei zwischen Seiten tauschen

Hallo Ihr,

bin mir sicher, dieses Problem ist schon öfter aufgetaucht. Aber ich habe keinen Tag gefunden, der mir weiterhelfen würde.

Ich habe folgendes Problem:

Ich arbeite derzeit an einer Website, die folgendermaßen aufgebaut ist:

ich habe einen Nav-Frame links und einen main-Frame rechts.

im main-frame rufe ich nun erneut ein Frameset auf, das die frames head und haupt enthält.

Nun möchte ich mit Hilfe von Java-Script einen String in ein Formular schreiben lassen und habe dazu folgende Date "funktionen.js" programmiert:

function uebernehmen (nummer)
  {
    window.name = nummer;
    parent.head.location="ipm_head.htm";
    parent.haupt.location="ipm_main.htm";
    parent.haupt.document.forms[0].elements[0].value = window.name;

}

Aufgerufen wird die Funktion über folgende Zeile:

<a href="JavaScript:uebernehmen(1)">Diesen Artikel bestellen</a>

Der Aufruf ansich und auch das Umschalten der Frameinhalte funktioniert einwandfrei. Aber bei dem parent.haupt.document.forms[0]... krieg ich die Fehlermeldung: parent.haupt.document.forms.0.elements ist NULL oder kein Objekt.

Wo bitte liegt mein Fehler?

Danke!

Gruß:
Thommy_F

  1. Hallo,

    parent.haupt.location="ipm_main.htm";
        parent.haupt.document.forms[0].elements[0].value = window.name;

    parent.haupt.document.forms.0.elements ist NULL oder kein Objekt.

    Ich vermute stark, dass document.forms noch nicht zur Verfügung steht zu dem Zeitpunkt, wenn du darauf zugreifen willst (prüfe es mal mit alert(parent.haupt.document.forms.length)). Du änderst die location und greifst direkt danach auf das DOM des Dokuments zu - das Dokument ist zu dem Zeitpunkt aber noch nicht vollständig geladen. Wahrscheinlich ist document.forms also noch leer.

    Blöderweise lässt sich nicht mit onload oder DOMContentLoaded arbeiten, weil man direkt nach der location-Zuweisung immer noch auf das DOM des alten Dokuments zugreift. Daher kannst du diese Änderungen nur in ipm_main.htm selbst anstoßen, ein Script darin kann sich die jeweiligen Daten (die du anscheinend deswegen auch in window.name speicherst) holen und das Formularfeld entsprechend füllen.

    Mathias

    --
    »No nations, no borders.«
    SELFHTML Weblog