• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] Auto-Scroller

broiler1985

New member
Hi!

Bin neu hier, also erst mal "Hallo an alle!". Ebenfalls neu bin ich bei JavaScript ;).

Mein Problem:
Ich habe eine Seite, in der Mitte ist ein Div, in selbigem befindet sich Text. Der Text ist größer als der Div. Ich würde also gerne den Text im Div scrollen.
Ich habe mir schon die Finger wundgegoogelt, finde aber einfach nicht das, was ich brauche.

z.B. dieses hier:

Code:
function scrollDiv_init() {
	DivElmnt = document.getElementById('content');
	ReachedMaxScroll = false;
	
	DivElmnt.scrollTop = 0;
	PreviousScrollTop  = 0;
	
	ScrollInterval = setInterval('scrollDiv()', ScrollRate);
}

function scrollDiv() {
	
	if (!ReachedMaxScroll) {
		DivElmnt.scrollTop = PreviousScrollTop;
		PreviousScrollTop++;
		
		ReachedMaxScroll = DivElmnt.scrollTop >= (DivElmnt.scrollHeight - DivElmnt.offsetHeight);
	}
	else {
		ReachedMaxScroll = (DivElmnt.scrollTop == 0)?false:true;
		
		DivElmnt.scrollTop = PreviousScrollTop;
		PreviousScrollTop--;
	}
}

Das funktioniert auch, der Inhalt des Divs scrollt hoch, und runter. Ich hätte allerdings gerne eine Pause zwischen den Vorgängen.
Also Runterscrollen, Pause, Hochscrollen, Pause

Ich bekomme aber einfach die Pause nicht hin.. vielleicht habe ich auch gerade ein Brett vor dem Kopf und viellecht ist die Frage auch ziemlich dumm.. kann mir jemand helfen?

Danke!
 
Zuletzt bearbeitet von einem Moderator:
So wie dein Code jetzt ist, scrollt der nur einmal runter und wieder rauf. Soll das dann aufhören?
Zu deinem Problem mit der Pause: wenn du mit Interval arbeiten willst, musstest du das beim Erreichen des Endes dieses mit window.clearInterval() stoppen und ein Timeout setzten, das das wieder startet. Deswegen würde ich da gleich mit window.setTimeout() arbeiten.

PS: window.setInterval() sollte man als ersten Parameter keinen String, sondern eine Funktionsreferenz übergeben. In deinem Fall also ScrollInterval = setInterval(scrollDiv, ScrollRate);
PPS: Du hast nur globale Variablen. Das ist nicht gut und auch gar nicht nötig.

Code:
<!DOCTYPE html>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Fenstertitel</title>
<style type="text/css">
div {
	height: 20px;
	width: 100px;
	overflow: auto;
}
</style>
</head>
<body>
<div>ljdsa föakjsd fla jflkjahf akj via fkjas vijabd falkjd fanf öoajd flkaj föka vöakj föalkjfd laöknv öoai ösa n</div>
<script type="text/javascript">
(function(){
	var div = document.getElementsByTagName("div")[0];
	var direction = 1;
	function scroll(){
		var oldScroll = div.scrollTop;
		div.scrollTop += direction;
		if (div.scrollTop === oldScroll){
			direction *= -1;
			window.setTimeout(scroll, 1000);
		}
		else {
			window.setTimeout(scroll, 20);
		}
	}
	scroll();
}());
</script>
</body>
</html>
 
Zurück
Oben