Andre Grumbach: Scrollen zu einem Anchor

Hallo zusammen,
in meiner Webseite habe ich nun das nächste Problem.

Meine Webseite besteht aus einigen RadioButtons, Textboxen und Buttons oben + zwei Divs weiter unten.
Die Divs sind Scrollbar, der Rest der Seite ist es nicht.

Nun versuche ich beim Neuladen der Seite den Fokus beizubehalten (an der Stelle an der ich gerade bin), hierzu habe ich Anchors eingebunden.
Dies funktioniert auch mehr oder weniger soweit, jedoch Springt er nicht nur in meinem Div an die Stell, sondern verschiebt es in der ganzen Webseite, so das ich auch die TextBoxen, Buttons, und RadioButtons nicht mehr angezeigt bekomme.

Nun habe ich versucht den DIV selbst zu Scrollen, jedoch weißt ich einfach bis zu welcher Stelle ich Scrollen muss.

Ich habe es mal mit:
document.getElementById(anchor).offsetTop veruscht, jedoch ist der Wert hier immer zwei (der Anchor ist in einer Tabelle, vermutlich deswegen).

Gibt es nun eine Möglichkeit, einzustellen das nicht die komplette Seite sondern nur der DIV zum Anchor springt oder wäre es möglich die genaue Position des Anchors zu bekommen?

Danke schon einmal,
Andre Grumbach

  1. hi,

    Ich habe es mal mit:
    document.getElementById(anchor).offsetTop veruscht, jedoch ist der Wert hier immer zwei (der Anchor ist in einer Tabelle, vermutlich deswegen).

    Dann betrachte auch offsetParent(s).

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hallo noch einmal,
    ich habe soeben eine Lösung für meine Problematik gefunden, jedoch wäre weiß ich nicht wie Sinnvoll das ist.

    Lösung:
    Ich gehe vom Anchor aus alle Übergeordneten Nodes durch (Bis zum Div selbst) und addiere den OffSet der Nodes.

    Anschließend Scoll ich dann dahin.
    Mein JScript Code:
    var element = document.getElementById(id);
           var TopAnchor = 0;
           while(element != null && element != undefined)
                    {
                        var nodename = element.nodeName;
                        if(Tree == element || nodename.toLowerCase() == "body")
                        {
                            break;
                        }
                        else if(nodename.toLowerCase() != "td")
                        {
                            TopAnchor = TopAnchor + element.offsetTop;
                        }

    element = element.parentNode;
                    }
                    Tree.scrollTop = TopAnchor;

    Frage: Geht das auch noch irgendwie anders, so das ich nicht erst alles durchgehen muss?

    Danke,
    Andre