Andreas Korthaus: an bestimmte Stelle scrollen

Hallo!

Ich habe in eine Seite eingebaut, dass eine Tabellenzeile per default
mittels "display:none" ausgeblendet wird, und per Link durch "display: block" eingeblendet wird.

Das ist soweit auch kein Problem, nur ist diese Zeile leider weiter unten im Dokument, so dass man nach unten scrollen muss.
Wenn ich jetzt aber per Javascript-Funktion die Zeile einblende, wird die Seite im Browser anscheinend neu erzeugt, also nicht neu geladen, sondern nur neu gerendert. Das führt dazu, dass man wieder oben auf der Seite ist und runterscrollen muss.

Ich verwende folgende Funktion um die Zeile ein- und auszublenden:

<script type="text/javascript">
<!--
 function change() {
    line = document.getElementById("langaben");
    if (line.style.display == "none") {
     line.style.display = "block";
     line.align = "center";
    }
    else {
     line.style.display = "none";
    }
 }
//-->
</script>

Kann man nicht irgendwie an diese Stelle wo die Zeile eingeblendet wird hinscrollen?

Kann man per Javascript das Browserfenster zu einem Anker bewegen, ohne die Seite neu zu laden? Wie?

Oder kann man irgendwie anders an die Stellen scrollen? Die Beispiel in SELFHTML zu den Scroll-Funktionen funktionieren bei mir alle nicht.

Viele Grüße
Andreas

  1. Hi,

    Ich habe in eine Seite eingebaut, dass eine Tabellenzeile per default
    mittels "display:none" ausgeblendet wird, und per Link durch "display: block" eingeblendet wird.

    Dein Link enthält vermutlich im href-Attribut den Wert "#" - das wird von vielen Browsern als "top" interpretiert.
    Wenn Du aber nicht nach "#" scrollen willst, unterbinde (durch return false) daß der Link ausgeführt wird - oder benutze einen real existierenden Anker, der z.B. in der tr mit der einzublendenden Zelle gesetzt ist.

    Ich verwende folgende Funktion um die Zeile ein- und auszublenden:

    Schön - aber der entscheidende Code, nämlich der Link, fehlt.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.mud-guard.de/
    1. Hallo,

      Dein Link enthält vermutlich im href-Attribut den Wert "#" - das wird von vielen Browsern als "top" interpretiert.
      Wenn Du aber nicht nach "#" scrollen willst, unterbinde (durch return false) daß der Link ausgeführt wird - oder benutze einen real existierenden Anker, der z.B. in der tr mit der einzublendenden Zelle gesetzt ist.

      Ergänzung:
      Also, das erste was du auf jeden Fall prüfen solltest ist, falls du ein a-Tag hast, dann sollte es im Click-Eventhandler ein return false stehen haben, damit das HREF ungültig wird:
      <a href="<irgendwas>" onclick="macheSichtbar(); return false;">

      Sollte der Browser dann immer noch nicht an der Einblendstelle sein, dann bietet zumindest Microsoft eine Lösung an:
      http://www65.gmx.net/de/cgi/derefer?TYPE=1&DEST=http%3A%2F%2Fwww.xxlkontakte.com
      var n = document.getElementById("dashiereinblenden");
      if (n.scrollIntoView)
         n.scrollIntoView();

      Vielleicht hilft dir das ja weiter...

      MfG
      Rouven

      --

      -------------------
      ss:) zu:) ls:& fo:) de:< va:{ ch:? sh:) n4:( rl:? br:$ js:| ie:) fl:(
      1. Hi,

        Sollte der Browser dann immer noch nicht an der Einblendstelle sein, dann bietet zumindest Microsoft eine Lösung an:

        Da fände ich die Lösung mit dem Anker besser, weil browserunabhängig.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.mud-guard.de/
      2. var n = document.getElementById("dashiereinblenden");
        if (n.scrollIntoView)
           n.scrollIntoView();

        Wenn es denn unbedingt mit JavaScript gelöst werden soll, dann eher mit window.scrollTo(0, n.offsetTop).

    2. Hi!

      Dein Link enthält vermutlich im href-Attribut den Wert "#" - das wird von vielen Browsern als "top" interpretiert.
      Wenn Du aber nicht nach "#" scrollen willst, unterbinde (durch return false) daß der Link ausgeführt wird - oder benutze einen real existierenden Anker, der z.B. in der tr mit der einzublendenden Zelle gesetzt ist.

      Wie Recht Du hast ;-)

      Mit dem "echten" Anker läuft es auch so wie ich es haben will!
      Darauf war ich leider nich gekommen ;-)

      Vielen Dank!

      Grüße
      Andreas

  2. Hallo Andreas!

    Vieleicht hilft dir schon das "return false" im Link, wie dir bereits Rouven schrieb.

    Kann man per Javascript das Browserfenster zu einem Anker bewegen, ohne die Seite neu zu laden? Wie?

    Ja, mittels "window.location.hash = 'Ankername';"

    Oder kann man irgendwie anders an die Stellen scrollen?

    Ja mittels '<a href="#Zielname" onclick="change();">' ohne "return false" zu verwenden, dann wird nach der Ausführung des Scriptes der Link ausgeführt und der Anker angesprungen.
    Dazu musst du natürlich dort, wo hingescrollt werden soll einen Anker '<a name="Zielname"></a>' setzen.

    Wenn es dir reicht, dass zum Link gescrollt wird, dann gebe dem Link einen Namen, und trage dann den Namen dieses Links als "href" ein, dann kannst du dir einen extra Anker sparen.

    '<a name="dieserName" href="#dieserName" onclick="change();">'

    MFG
    Detlef

    --
    - Wissen ist gut
    - Können ist besser
    - aber das Beste und Interessanteste ist der Weg dahin!