Max: Sichtbares Scrollen um einen best. Wert ohne Positionsangabe

Ich versuche schon seit zwei Tagen verzweifelt eine Funktion zu erstellen.
Die Funktion soll bei Klicken auf einen Div am oberen Bildschirmrand jeweils um die Höhe des Anzeigefensters nach oben scrollen, wobei der Scrollvorgang sichtbar sein soll.

Diese Funktionen kann ich aus folgenden Gründen nicht benutzen:

1. Variante (http://www.maxwalker.de/test/variante1.html)
function hoch() {
  var y = 0;
  if (window.pageYOffset) {
    y = window.pageYOffset;
  }
  else if (document.body && document.body.scrollTop) {
    y = document.body.scrollTop;
  }
  if (y > window.innerHeight) {
    window.scrollBy(0, -10);
    setTimeout("hoch()", 1);
  }
}

  • scrollt nur zu einer festen Position (scrollt solange wie die vertikale Scrollposition kleiner als die einfache Fensterhöhe ist)
    (Desweiteren ist es problematisch, dass das scrollen nur in 10-Pixel-Schritten erfolgt, weil dadurch bei Fensterhöhen, die nicht durch 10 teilbar sind, der Abschluss nicht richtig ist. Kleinere Schritte sind leider nicht mögich, da die Zeit bei setTimeOut nicht kleiner als 1ms sein darf, wodurch das Scrollen ewig dauert.)

2. Variante (http://www.maxwalker.de/test/variante2.html)

function hoch() {
var a = window.innerHeight / 10;
for(var i=0; i<a; i++) {
window.scrollBy(0, -10);
}
}

--> http://www.maxwalker.de/test/variante2.html

  • scrollt zwar um einen bestimmten Wert nach oben (ohne feste Positionsangabe), der Scrollvorgang ist aber nicht sichtbar

Freue mich über jede Hilfe!

  1. Hello out there!

    Ich versuche schon seit zwei Tagen verzweifelt eine Funktion zu erstellen.

    Bereits vor zwei Tagen wurde dir gesagt, dass du keine neuen Thrads zum gleichen Thema beginnen sollst. [https://forum.selfhtml.org/?t=157015&m=1021423] Also halte dich dran!

    See ya up the road,
    Gunnar

    --
    „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)
    1. Da es sich hier um ein anderes Problem handelt, bin ich davon ausgegangen, dass es legitim ist, dafür einen neuen Post zu erstellen.
      Wenn das falsch rübergekommen ist, tut es mir leid.