Doc Taxon: Schon wieder Frames

Hallo,

Ich möchte in einem horizontalen Frameset, das zentral von mehreren HTML-Dateien wechselweise genutzt wird, die Zeilenhöhe variabel gestalten.

Momentan heißt das frameset noch:

<framset rows="*,60">
  <frame name="tree" src="2html.htm" target="work>
  <frame name="work" src="3html.htm">
</frameset>

Das entspricht eine Zeilenhöhe von 60, egal welche Seite dieses Frameset nutzt. Kann ich mit einer Variablen aus der htm-Datei die '60' ersetzen, so daß bei einer Seite meinetwegen 100 und bei einer anderen nur 30 Zeilenhöhe wiedergegeben werden. Ich kann doch für '60' per JavaScript eine Variable definieren (var w = 60), aber 'w' jetzt einfach für '60' in die frameset-Zeile einzusetzen, funktioniert so nicht.

Wie muß ich die Zeile <frameset rows="*,60"> umschreiben?

Danke, Doc Taxon

  1. Tach,

    Ich kann doch für '60' per JavaScript eine Variable definieren (var w = 60), aber 'w' jetzt einfach für '60' in die frameset-Zeile

    Doch geht rein theoretisch schon:

    Javascript:
    var w = 60;

    document.getElementById("framesetId").rows = "*,"+60;

    HTML:
    <framset id="framesetId" rows="*,60">
      <frame name="tree" src="2html.htm" target="work>
      <frame name="work" src="3html.htm">
    </frameset>

    Gruesse,
    Joerg

    1. Tach,

      Ich kann doch für '60' per JavaScript eine Variable definieren (var w = 60), aber 'w' jetzt einfach für '60' in die frameset-Zeile

      Doch geht rein theoretisch schon:

      Javascript:
      var w = 60;

      document.getElementById("framesetId").rows = "*,"+60;

      HTML:
      <framset id="framesetId" rows="*,60">
        <frame name="tree" src="2html.htm" target="work>
        <frame name="work" src="3html.htm">
      </frameset>

      Gruesse,
      Joerg

      Ich muß aber den Wert für w auf den jeweiligen htm-Seiten immer wieder neu definieren, ich kann das nicht auf der frameset-Seite tun, so soll sich dann die Höhe des unteren Frames mit Aufrufen der nächsten htm-Seite immer wieder automatisch ändern...

      Was schreib ich dazu dann auf die jeweiligen htm-Seiten?

      1. Tach nochmal,
        Hab deine Mail grad gekriegt. Also:

        1.) document.getElementById(irgendwas) liefert dann "ist null oder kein Objekt", wenn Du im HTML-Quellcode keinem Objekt eine ID gegeben hast, die irgendwas heisst.
        Wenn Du den unteren Quellcode auch so stehen hast, dürftest du keine Fehlermledung kriegen, weil das frameset unten die id, die aufgerufen wird ("framesetId") besitzt.
        Näheres hierzu siehe http://de.selfhtml.org/javascript/objekte/htmlelemente.htm
        document.getElementById() geht allerdings erst ab Netscape 6.0 und IE5, solltest Du vielleicht wissen. Willst du ältere Browser unterstützen, brauchst Du eine entsprechende Weiche.

        2.) Dass w nicht vorkam war in der tat ein Leichtsinnsfehler von mir, es muss heissen:
        document.getElementById("framesetId").rows = "*,"+w;

        3.) Wenn Du das ganze von den Frames selbst aus steuern willst, geht das genauso, dann musst du eben vom Frame auf das frameset zugreifen, dies erreichst Du mittels "parent":
        (innerhlab eines Frames):

        var w = 60;
        parent.document.getElementById("framesetId").rows = "*,"+w;

        Hierzu solltest du ggf. nochmal in Selfhtml nachlesen, wie du genau auf Frames innehalb Framesets zugreifsat und umgekehrt.

        Viele Grüße,
        Jörg

        1. Hallo Jörg,

          ich noch mal...

          Also, diese Fehlermeldung tritt nur in der MS FrontPage-Vorschau auf, im
          Browser IE6 funktioniert es, aber...

          Das zweite Fenster bleibt immer in der Größe 60, auch wenn ich den Wert für
          w ändere. Ist da noch ein Flüchtigkeitsfehler?

          Doc Taxon...

          1. Hallo nochmal,
            Erstmal: Ich empfehle Dir für JavaScript-Programmierung den Mozilla mit seiner JavaScript-Konsole zum testen zu benutzen - der IE oder gar Frontpage taugen da wenig, die Fehlermeldungen, die du davon kriegst sind kaum aussagekräftig.

            Wenns noch nicht geht, du aber auch keine Fehlermeldung siehst, musst Du wohl oder übel bisschen debuggen.
            Ein paar alerts zum Ausgeben, was wo drinsteht (alert(parent.document.getElementById("framesetId").rows) z.B. sollte Dir anzeigen, auf welchem Wert aktuell Deine Zeileneinstellung im Frameset steht)sind sicher hilfreich.

            Ansonsten: Viel auf SELFHtml lesen, vor allem über JavaScript und DOM.

            Gute nacht,

            Jörg