AutoScroll Problem

Hallo,

ich habe bei mir ein AutoScroll Script integriert, dass mir bei Klick auf “Back to the Top” automatisch nach oben scrollt anstatt nach oben “springt”.

Nur habe ich ein Problem, nachdem es bis am Anfang gescrollt hat…
Danach kann ich nicht mehr runterscrollen weil er mir sofort wieder automatisch hinauf scrollt…

Hier mal der Code:

		<script language="JavaScript" type="text/javascript">
      var speed=10
      var currentpos=0,alt=1,curpos1=0,curpos2=-1 
      var aktiv
      
      function scrollwindow(){
        if (document.all)
          temp=document.body.scrollTop
        else
          temp=window.pageYOffset
        if (alt==0)
          alt=1
        else
          alt=0
        if (alt==0)
          curpos1=temp
        else
          curpos2=temp
        if (curpos1!=curpos2){
        if (document.all)
          currentpos=document.body.scrollTop-speed
        else
          currentpos=window.pageYOffset-speed
          window.scroll(0,currentpos)
        }
        else{
          currentpos=0
          window.scroll(0,currentpos)
        }
      }

      function startscroll(){
        aktiv = window.setInterval("scrollwindow()",10)        
      }
    </script>

Aufgerufen wird der Code durch:

<a href="javascript:startscroll();" title="Back to Top" class="btop">Back to Top</a>

Ich habe auch schon probiert an das Ende von scrollwindow() folgendes ein zu fügen:

if(windows.pageYOffset == 0)
    window.clearInterval(aktiv);

das geht jedoch auch nicht.

Lg
Christof

habe lange gerätselt und so funktioniert es:

[code]
var speed=10
var currentpos=0,alt=1,curpos1=0,curpos2=-1
var aktiv

  function scrollwindow(){
	if(window.pageYOffset == 0)
		{
		window.clearInterval(aktiv);
		return;
		}
	if (document.all)
      temp=document.body.scrollTop
    else
      temp=window.pageYOffset
    if (alt==0)
      alt=1
    else
      alt=0
    if (alt==0)
      curpos1=temp
    else
      curpos2=temp
    if (curpos1!=curpos2){
    if (document.all)
      currentpos=document.body.scrollTop-speed
    else
      currentpos=window.pageYOffset-speed
      window.scroll(0,currentpos)
    }
    else{
      currentpos=0
      window.scroll(0,currentpos)
    }
  }

  function startscroll(){
    aktiv = window.setInterval("scrollwindow()",10)       
  }
</script>[/code]

EDIT:
Gerade erst gesehen, das du geschrieben hast, das es so nicht funktionieren würde, aber bei mir gehts …
vielleicht machst du etwas falsch :wink:

Also rein vom Gefühl her würde ich das in etwa so schreiben:

var speed=10;
var aktiv, interval;
     
function _doscroll() {
  var cury;
  if (document.all)
    cury = document.body.scrollTop;
  else
    cury = window.pageYOffset;

  cury -= speed;

  if(cury < 0) {
    cury = 0;
    interval.clearInterval(interval);
  }
  window.scroll(curx, cury);
}

function startscroll(){
  interval = window.setInterval("_doscroll()",10);
}

Das scrollt aber immer rauf, abbrechen ist nicht möglich

Danke genau so funktioniert es…

Ich hatte zwei kleine Unterschiede drinnen…

  1. kein return;
  2. die if-Abfrage mit dem pageYOffset am Ende und nicht am Anfang der Methode…

DANKE.