De element - le 22-11-2007 Excellent script ! | De coxtheking - le 25-11-2007 Merci...
Euh, je viens de recevoir un email disant qu'il avait été accepté alors que ça fait des mois que je l'ai posté et il avait dit qu'il n'était pas accepté, parfois il faudra m'expliquer ^^!
Beh have fun à tous alors :p ;) | De johnoo - le 30-11-2007 Ne fonctionne pas correctement sous ie7 ... | De TiteNath - le 01-12-2007 Bonjour,
Le script marche très bien sur IE7.
Mais pas plus d'une fois.
En attendant, je trouve ça bien sympa !
Merci... | De sweetdreams - le 04-02-2008 J'ai réussi a corriger l'erreur sous IE7 :
il faut modifier :
dans la deuxième fonctio ftc :
if( hActuel > hFinal) par
if( hActuel == 20) puis enlever le code :
objet.style.overflow = 'inherit';
voila. :p | De colindk - le 06-02-2008 La correction pour IE7 ne fonctionne pas.
Après cette correction le script ne marche plus avec Firefox. | De colindk - le 06-02-2008 ce n'est pas
if( hActuel > hFinal)
qu'il faut remplacer mais
if( hActuel < hFinal)
et c'est par
if( hActuel <= 20)
qu'il faut le faire
Il faut effectivement enlever le code
objet.style.overflow ='inherit';
qui se trouve dans cette conditionnelle. | De zzfurax - le 08-04-2008 Ce div déroulant est très intéressant. J'y ai ajouté un petit compteur qui permet de réduire la taille de la police en même temps que le div se réduit. Ce code est à ajouter dans la close [else if]
1°- avec les autres mises à jour des propriétés du div:
2°- juste après la réduction de la hauteur du div:
sizeActuel -= 1;
objet.style.height = hActuel + 'px';
objet.style.fontSize = sizeActuel + 'pt'; |
|
Augmenter la taille de la police ne même temps que le div se développe est un jeu d'enfant...
Merci de cette bonne idée. | De gregouye - le 18-04-2008 Le script ne marche pas sur IE6 et sur Firefox il me fait une erreur sur href="javascript:;" en disant qu'il attend un objet.
Merci pour vos reponses! | De levelkro - le 24-04-2008 Voici le code revu et corrigé, permet de choisir le nom par le lien en plus de controler la hauteur pour ajouter plusieurs divs par 1 seul code, de plus il peut effacer les autre de la même série pour afficher le dernier, j'ai pris une partie du code de cacheTout d'un autre système qui cache les divs.
J'ai aussi volontairement désactiver des code si vous désirez retrouver l'original en partie.
Dans un document .JS de votre choix
[code]
function Suite(nom,lien,hauteur){
var objet = document.getElementById(nom); // entre les deux ' tu mes le nom du div que tu veux faire apparaître !
if(objet.style.display == "none" || !objet.style.display){
/* objet.innerHTML = "Ici le text que tu veux faire apparaître !"; */
objet.style.display = "block";
objet.style.overflow = "hidden";
/* lien.innerHTML = "-"; */
var hFinal = hauteur; //Hauteur finale (la hauteur une fois que ça aura fini de déplier !)
var hActuel = 0; //Hauteur initiale (la hauteur dès le début !)
var timer;
var fct = function ()
{
hActuel += 5; //Augmente la hauteur de 20px (tu peux modifier) tous les 40ms !
objet.style.height = hActuel + 'px';
if( hActuel > hFinal)
{
clearInterval(timer); //Arrête le timer
objet.style.overflow = 'inherit';
}
};
fct();
timer = setInterval(fct,10); //Toute les 40 ms
}
else if%2 | De jezz - le 05-06-2008 J'utilise le dernier code mis en liste et j'ai toujours un erreur lors de la fermeture de la div sur IE7
--> Argument non valide donné sur la ligne suivante après le elseif
| objet.style.height = hActuel + 'px'; |
|
avez vous un idée de ce que pourrais être mon problème? | De nouam - le 24-12-2008 Bonjour,
J'ai utilisé le "code revu et corrigé" de
levelkro
Le script ne marche plus : il y une erreur
Objet requis
Alors que j'arrivais bien à le faire marche sur IE6 et IE7 et Firefox avant.
Est-ce que quelqu'un apporter une aide. | De bugmenot - le 08-01-2009 Après quelque essais, j'ai enfin corrigé ce code pour qu'il fonctionne chez moi. sur IE7 et mozilla 3.0.5.
Le principale probleme sur IE (et surement sur Mozilla, mais il doit passer outre) c'estque, selon la taille de votre <div>, lorsqu'on le réduit, on tombe parfois sur un nombre négatif (exemple : 15 - 20 = -5 ), et lorsqu'on veut mettre le width à -5, ca bug.
On peut coriger cela comme on veut, j'ai preferer faire ca proprement :
if(hActuel>=0){ objet.style.width = hActuel +'px'; }
|
|
Et il faut effectivement enlever tout les
| objet.style.overflow = 'inherit'; |
|
On peut aussi enlever le
| objet.style.overflow = "hidden"; |
|
Pour finir n'oubliez pas d'enlever les
Si vous utilisez autre un autre type de lien comme une image par exemple. | De exup1 - le 28-03-2009 Bonjour,
Merci à l'Editeur Javascript et ses contributeurs pour la qualité de leur travail.
Ce script est éxactement ce que je cherche. Est-ce que quelqu'un peut me dire s'il est possible de l'adapter sur SPIP ?
En effet j'aimerais le rendre compatible avec le codage SPIP qui permets de référencer le contenu des pages pour la recherche. Si quelqu'un l'a déjà fait, j'aimerais avoir son avis.
Merci. | De mng - le 08-05-2009 Mes petites corrections:
bugmenot a fait une petit faute:
if(hActuel>=0){ objet.style.height = hActuel +'px'; }
|
|
Et pour que la div se referme si on clique à côté, on peut rajouter ça dans le lien:
| De cosmo_75 - le 04-11-2009 Bonsoir à tous,
J'ai pu tester avec succès ce script sur Firefox 3.0.15. Sur IE6 il y a un petit bug lorsque je tente de refermer le div, mais il me semble que ce bug est signalé et corrigé dans les commentaires précédents.
Ma question porte sur un autre point : le texte affiché se trouve dans la partie Javascript, donc entre les balises Head. Ne serait-il pas possible de le mettre directement dans le div ? | De Nogardryu - le 16-03-2010 Bonjour à tous, j'ai découvert ce script il y a quelques jours, et avec toutes vos corrections, on ne sait plus vraiment quelle est la bonne version complète du script. pas grave, je vais m'en faire un et s'il marche, vous le donner.
Pour répondre à cosmo_75, tu n'es pas obligé de mettre le texte en javascript. Inner.html insère un texte dans un div, mais tu peux t'en passer en mettant directement
document.getElementById(id_de_ta_div_a_afficher).style.display='block'
Bien entendu, la div concernée doit de base être en display: none;
Je ne sais pas si je suis très clair ni ça te sera encore possible mais peu importe. CA servira certainement à quelqu'un.
Promis, je j'arrive à faire un script propre et qui marche, je vous le soumettrais. | De levelkro - le 17-03-2010 Désolé mon ancien message a pas sauver correctement, j'essai suite a un message privé, j'ai améliorer le code, mais j'ai pas pris le temps de faire la fonction pour tous ouvrir ou fermer suivant un prefix commun (comme popup)
<script type="text/javascript">
function Suite(lien,hauteur){
//***
// levelKro: Ont ajoute le nom a afficher et sa hauteur
// tous les tag 'hauteur' sont des remplacement du code d'origine
// l'ancien code aussi était fix a 1 div a cause de la première ligne de la fonction, elle aussi est une amélioration du code original
// le troisième est un fix du code, sous certain cas le code ne marche pas car en ce cachant il peut rester afficher,
// pour éviter que ceci arriver la ligne disant la hauteur regle le problème, testé sous IE
//****************************
var objet = document.getElementById(lien); // entre les deux ' tu mes le nom du div que tu veux faire apparaître ! levelKro +++!
if(objet.style.display == "none" || !objet.style.display){
objet.style.display = "block";
objet.style.overflow = "hidden";
lien.innerHTML = "-";
var hFinal = hauteur; //Hauteur finale (la hauteur une fois que ça aura fini de déplier !) levelKro ++!
var hActuel = 0; //Hauteur initiale (la hauteur dès le début !)
var timer;
var fct = function (){
hActuel += 5; //Augmente la hauteur de 20px (tu peux modifier) tous les 40ms !
objet.style.height = hActuel + 'px';
if( hActuel > hFinal){
clearInterval(timer); //Arrête le timer
objet.style.overflow = 'inherit';
}
};
fct();
timer = setInterval(fct,40); //Toute les 40 ms
}
else if(objet.style.display == "block"){
var hFinal = 0; //Hauteur finale (la hauteur une fois que ça aura fini de déplier !)
var hActuel = hauteur; //Hauteur initiale (la hauteur dès le début !) levelKro ++!
var timer;
var fct = function (){
hActuel -= 5; //Augmente la hauteur de -20px (tu peux modifier) tous les 40ms !
objet.style.height = hActuel + 'px';
if( hActuel <= hFinal){
clearInterval(timer); //Arrête le timer
objet.style.overflow = 'hidden';
objet.style.display = "none";
objet.style.height = "0"; // levelkro: Fix du cache de la div +++
}
};
fct();
timer = setInterval(fct,40); //Toute les 40 ms
lien.innerHTML = "+";
}
}
</script>
[<a href="#" onclick="Suite('popup0','200')">+</a>] popu0
[<a href="#" onclick="Suite('popup1','40')">+</a>] popup1
[<a href="#" onclick="Suite('choufleur','18')">+</a>] choufleur
<hr>
<div id="popup0" style="display: none; border: #000000 1px solid; width: 300px;">
Popup 0
<br><br><br><br><br><br><br><br>
Simple ?
</div>
<div id="popup1" style="display: none; border: #000000 1px solid; width: 100px;">
Popup 1
</div>
<div id="choufleur" style="display: none; border: #000000 1px solid; width: 200px;">
ici un choufleur
</div>
|
|
Reste qu'a porduire un fonction while avec le prefix desiré et passe les numéro 1 a la suite de l'autre, faut juste s'assurer de faire les numéro sans aucun oublie de suite :) |