2017-09-05 2 views
0

J'ai donc cette fonction qui fait défiler vers le bas de la page, et au fond de la div scrollable #log:JavaScript - Faites défiler vers le bas de la division - Garde le défilement vers le bas sans arrêt

function gotoConsole() { 
    var console = document.getElementById('log'); 

    window.scrollTo(0,document.body.scrollHeight); 
    window.setInterval(function() { 
     console.scrollTop = console.scrollHeight; 
    }, 250); 
} 

Il fait le travail, il défile jusqu'à la page et fait défiler vers le bas de la div. Mais le problème est: Le div continue à descendre, je ne peux pas défiler vers le haut.

La fonction gotoConsole() est appelée une seule fois après que l'utilisateur a cliqué sur un bouton.

Quel est le problème avec cette fonction? Je ne peux pas utiliser jQuery pour cela.

+0

vous devez utiliser 'clearInterval' quelque part après la fin du défilement – MysterX

+0

avez-vous utilisé' '' setInterval''' –

+3

Voir une variable nommée 'console' me donne envie de crier sur mon moniteur. – Santi

Répondre

0

Je pense que vous pourriez avoir mal compris setInterval. setInterval() va répéter infiniment sauf si vous l'effacez spécifiquement en utilisant clearInterval.

Je crois que ce que vous êtes après est-setTimeout - il fonctionne de façon très similaire à setInterval, mais plutôt que de répéter, il ne fonctionne que une fois.

function gotoConsole() { 
    var myConsole = document.getElementById('log'); 

    window.scrollTo(0,document.body.scrollHeight); 
    window.setTimeout(function() { 
     myConsole.scrollTop = myConsole.scrollHeight; 
    }, 250); 
} 

Side note:

Définition d'une variable console est un grand drapeau rouge. Lors de l'écriture/du débogage de JavaScript, votre meilleur ami sera très souvent console.log(). Lorsque vous définissez une variable sur le même nom, vous perdez la possibilité de référencer console dans cette portée sans faire window.console.log(), ce qui est une gêne gênante.