11549 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous.

J'essaie de récupérer la position d'un élément après qu'il ai bougé via animate().

Le code html:

<header>
		<div id="visible">
			<div id="slides" style="top: -447px;">
				<div id="slide_4" class="banner">
				
				</div>
				<div id="slide_3" class="banner">
				
				</div>
				<div id="slide_2" class="banner">
				
				</div>
				<div id="slide_1" class="banner">
				
				</div>
			</div>
		</div>  <!-- End of #visible   -->
	</header>


Et le code javascript

var n = $('#slides').position();
	
		function deplacement(){
			for(i=0; i<=150; i++){
				if(n.top == '0'){
					$('#slides').delay(2000).animate({
						top: '-=447'
					}, 1000)
				}else{
					$('#slides').delay(2000).animate({
						top: '+=149'
					}, 1000, function(){
						alert (n.top);
					})
					
				}
			}
		};
		
		deplacement();


Voilà donc en gros j'ai un bloc dans lequel défilent, à intervalle de 2s, des bannieres, de haut en bas.
J'essaie de récupérer la valeur 'top' du bloc qui contient les bannières pour dire à celui-ci de remonter à sa position de départ quand il est arrivé en bout de course. Le problème c'est qu'avec toutes les méthodes que j'ai essayé, je récupère la position définie au départ (soit -447px).
Y a t-il un moyen de récupérer la valeur top après le déplacement?

Merci de vos conseils. Smiley smile
Tu dois pouvoir définir une variable au début genre :

var currentPosition = 1;
var slides = $('.banner');
var slidesCount = slides.length();


Que tu incrémentes à chaque exécution de la fonction deplacement()
Ensuite, dans la boucle tu lui ajoutes une condition :

if(currentPosition == slidesCount) {
	$('#slides').delay(2000).animate({top: '-447px'}, 1000);
}
Modérateur
Tu as une fonction qui se déclenche lorsque l'animation est terminée, tu as la position de départ et tu connais la distance parcourue.

Ta nouvelle position est tout simplement une addition/soustraction entre ces deux dernières valeurs. De plus, si tu vérifies une fois l'animation complétée, tu auras bien la valeur actuelle...
Ah yes. Merci pour ces deux réponses, aussi intéressantes l'une que l'autre.

Pour la soustraction, j'aurais du y penser... Smiley confus

Merci à vous deux.