Fonction cache montre avec slide

thejoker31200 Messages postés 1 Date d'inscription mercredi 2 juin 2010 Statut Membre Dernière intervention 5 janvier 2011 - 5 janv. 2011 à 17:56
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 6 janv. 2011 à 18:46
Bonjour
j'ai amélioré un bout de code pour afficher et cacher du texte avec effet de slide (affichage progressif)
sans le slide ca fonctionne
avec le slide ca fonctionne aussi maais une seule fois sur chacun des items...

mon code
//////////*****/////////
function SuiteH(thingId){	
//  On ajoute la div a afficher et sa hauteur
/// on recupere le nombre d'id
 z=0;
 for(i=1; i<=10;i++){
 if (document.getElementById("divid" + i) ) z++;
 } 
 //alert ('toto '+z);		 
//on recupere id de la div a cacher
IDaC=0;
NbId =1;
for (i = 1; i <= z; i++) {
var objet = document.getElementById("divid" + i) ;
//alert ('tutu '+document.getElementById("divid" + i).style.display);
if (objet.style.display == "block") {
       IDaC=NbId;
    }
NbId++;	
}
//alert ('toto '+IDaC);
   //on definit la largeur(hauteur) a reduire	
largeur = 600;
///on cache la div
//var i;
var targetElement;
//for(i=1; i<=NbId;i++){
/* targetElement = document.getElementById("divid" + i) ;
 targetElement.style.display = "none" ;*/
if (IDaC != "0") {
alert ('tata '+IDaC);
var targetElement = document.getElementById("divid" + IDaC);
var lFinalH = 0; //largeur finale 
var lActuelH = largeur; //largeur initiale 
var timer;
var fctH = function(){
lActuelH -= 10; //Augmente la largeur de -10px  
targetElement.style.width = lActuelH + 'px';
if (lActuelH <= lFinalH) {
clearInterval(timer); //Arrête le timer
//targetElement.style.overflow = 'hidden';
targetElement.style.display = "none";
targetElement.style.width = "0"; // Fix du cache de la div +++
}
};
fctH();
timer = setInterval(fctH, 1); //Toutes les 1 ms
//IDaC.innerHTML = "+";
document.getElementById("divid" + IDaC).value = "+";
}
// }
 //on montre la div
 var objet;
 var linal;
 var lActuel;
 largeur2=600;
var objet = document.getElementById("divid" + thingId) ; // entre les deux  le nom du div que tu veux faire apparaître 
if (objet.style.display == "none" /*|| !objet.style.display*/) {
alert ('titi '+thingId);

//objet.style.width  = "400px";
//objet.style.overflow = "hidden";
//thingId.innerHTML = "-";
document.getElementById("divid" + thingId).value = "-";
var lFinal = largeur2; //largeur finale (la largeur une fois que ça aura fini de déplier) 
var lActuel = 0; //largeur initiale (la hauteur au début)
var timer;

var fct = function(){
lActuel += 10; //Augmente la largeur de 10px  
objet.style.width = lActuel + 'px';
if (lActuel > lFinal) {
clearInterval(timer); //Arrête le timer
/*objet.style.overflow = 'inherit';*/
}
};
fct();
timer = setInterval(fct, 1); //Toutes les 1 ms
objet.style.display = "block";
}	
}

//////////*****/////////

appel de la fonction
[# et encore...]

[# et plus...]







texte




texte



1 réponse

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
6 janv. 2011 à 18:46
Bonjour,
visiblement un problème de conflit de timer, il t'en faut 2, donc renommes le second

;O)
0
Rejoignez-nous