Partage
  • Partager sur Facebook
  • Partager sur Twitter

faire bouger une div

sans jquery

Sujet résolu
    6 juillet 2009 à 9:11:41

    Bonjour,

    J'essaie de faire slider une div, mais ça marche pas, en fait le script s'exécute et je ne vois le résultat qu'à la fin. Donc si quelqu'un pouvait m'aider. :

    function entreImage(){
    	document.getElementById("carteid").style.display = 'block';
    	document.getElementById("carteid").style.backgroundColor = 'blue';
    	document.getElementById("carteid").style.position = 'absolute';
    
    	document.getElementById("carteid").style.zIndex = '2';
    	document.getElementById("carteid").style.top = window.innerHeight / 2+'px';
    //	document.getElementById("carteid").style.borderColor= 'black';
    
    
    	cpt= 0;
    	for(i = 0; i < window.innerWidth /2; i++)
    		{	
    		
    		window.setInterval('decal(i)',10);		
    		document.getElementById("carteid").innerHTML += "a ";
    		
    		}
    		
    	}
    	
    	function decal(i){
    		document.getElementById("carteid").style.marginLeft = i+'px';
    	}
    


    <div id="carteid" style="display:none; ">
        </div>
    


    Merci d'avance.

    Thoma
    • Partager sur Facebook
    • Partager sur Twitter
      6 juillet 2009 à 9:32:49

      Le problème vient à priori de :
      for(i = 0; i < window.innerWidth /2; i++){	
      	window.setInterval('decal(i)',10);		
      	document.getElementById("carteid").innerHTML += "a ";
      }
      

      Ici on est face à un cas où une closure s'impose (pour savoir ce que c'est je te laisse chercher le tuto sur le sdz, j'ai un peu la flemme là ^^')
      Bref il te faut :
      for(i = 0; i < window.innerWidth /2; i++){	
      	window.setInterval(
      		function(arg){
      			return function(){
      				decal(arg);
      			}
      		}(i),
      		10
      	);		
      	document.getElementById("carteid").innerHTML += "a ";
      }
      
      • Partager sur Facebook
      • Partager sur Twitter
        6 juillet 2009 à 10:01:19

        A terme ça risque de faire beaucoup d'interval ça ¬_¬
        • Partager sur Facebook
        • Partager sur Twitter
          6 juillet 2009 à 10:05:44

          Ouaip, je ne sais pas d'ailleurs s'il ne s'est pas planté et a pas plutôt voulu faire des timeout
          • Partager sur Facebook
          • Partager sur Twitter
            6 juillet 2009 à 10:08:13

            Si on considère que j'ai un écran en 1680x1050

            1680 / 2 = 840

            Donc ça ferait 840 interval qui s'exécuterait toute les 10 milisecondes, Amen † (Ou je devrais dire plutôt R.I.P )
            • Partager sur Facebook
            • Partager sur Twitter
              6 juillet 2009 à 10:36:06

              Je pense en effet que toto a mal compris le fonctionnement de setInterval... (en tous cas, je faisais comme lui, à mes débuts ^^ )

              Mais est-ce que quelque chose comme ça ne serait pas plus simple ?

              var timer = setTimeout(function() { decal(0); },10);	
              function decal(i){
                document.getElementById("carteid").style.marginLeft = i+'px';
                if(i+1<window.innerWidth /2) {
                  timer=setTimeout(function() { decal(i+1); },10);
                }
              }
              

              • Partager sur Facebook
              • Partager sur Twitter

              faire bouger une div

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown