Uschi Renziehausen: anker

Beitrag lesen

Hallo alex,

Wenn du mit anchor arbeitest, scrollt der Browser immer gerade soweit nach rechts, wie notwendig, um den Anfang deines Blocks anzuzeigen. Du möchtest aber, daß er soweit nach rechts scrollt, dass der fragliche Block am linken Rand erscheint.
Leider bin ich in dieser Frage nicht wirklich erfahren und ich habe jetzt keine Zeit zum Testen, aber der Weg, den ich versuchen würde, wäre der:
Verpass im oberen Frame den Tabellenzellen, die den linken Rand eines Blocks bilden, eine jeweils eindeutige id <td id="news">.
Im unteren Frame weist du dem value-Attribut der entsprechenden option denselben Wert zu: <option value="news">

Nun bastelst du dir eine Funktion, die das Scrollen im oberen Frame besorgt. Nennen wir das Kind mal roller. Diese muß jetzt folgendes machen:

  1. rausfinden, wo sich die Tabellenzelle gerade befindet
  2. an diesen Punkt scrollen.

Diese Funktion rufst du onchange in deiner Select-Liste auf und gibst ihr den value der gewählten option als Parameter mit.
<select onchange="roller(this.value)" ....

function roller(eltId) {
  // erstmal das Element besorgen
  var elt = parent.frames['content'].document.getElementById(eltId);
  // linke Position des Elements finden
  var leftPos = elt.offsetLeft;
  var topPos = elt.offsetTop;
  // dahin scrollen
  parent.frames['content'].scrollTo(leftPos, topPos);
}

Wie gesagt, völlig ungetestet, aber der Ansatz sollte stimmen.
Infos zu getElementById: http://selfhtml.teamone.de/javascript/objekte/document.htm
Zu scrollTo: http://selfhtml.teamone.de/javascript/objekte/window.htm#scroll_to

Schau mal, ob es dir weiterhilft, ich muß jetzt leider was anderes tun.

Liebe Grüße, Uschi