Ugo Posté 22 Février 2009 Posté 22 Février 2009 Bonjour à tous ! Je rencontre un petit problème... Tout d'abord, voici mes codes : <script type="text/javascript">function toggle(object_id){ var obj=document.getElementById(object_id) if((obj.style.display == 'block')||(obj.style.display == '')) obj.style.display='none' else obj.style.display='block' }function cache(){ document.getElementById( ).style.display='none';}</script> Et dans ma page <ul><li><a href="java script:toggle('blocid')">Un vol en Californie</a><br><object id="blocid" width="400" height="327">.......... J'ai 6 blocid, ce qui me fait arriver à "<object id="blocid6"..." pour mon dernier bloc à afficher/masquer. Problème : J'aimerais qu'ils soient tous masquer au chargement de la page, mais je n'arrive pas à le lui dire ! Un seul, j'y arrive : function cache(){ document.getElementById("blocid2").style.display='none';} mais pas tous... Help ! Merci beaucoup Ugo
libelinfo Posté 22 Février 2009 Posté 22 Février 2009 (modifié) à vue de nez, il faut utiliser une boucle "for" pour lister tous les "DIV" de ta page, vérifier qu'il s'agit bien de ceux qu'on veut et leur appliquer la modif, ce qui donnerait quelque chose comme ça : <div id="blocid1" "style=display:block;">1</div><div id="blocid2" "style=display:block;">2</div><div id="blocid3" "style=display:block;">3</div><div id="blocid4" "style=display:block;">4</div><div id="blocid5" "style=display:block;">5</div><div id="blocid6" "style=display:block;">6</div><a href="java script:masquer();">masquer</a><script language=javascript> function masquer() { var div_elem = document.getElementsByTagName("DIV"); for (i=0; div_elem.length; i++) { // on recupère chaque objets DIV var obj= div_elem[i]; // on récupère l'id de chaque objet DIV var str_ID = obj.id; // on verifis si l'id correspond à ce que l'on cherche if (str_ID.substr(0,6) == 'blocid' ) { // on applique la modif voulue obj.style.display='none'; } } } </SCRIPT> c'est un scrip fait à la va vite, certainement perfectible edit : on peut peut aussi faire une boucle for allant de 1 à 6 si on connait exactement le nombre de div concernés sans avoir besoin de passer en revu tous les DIV de la page : function masquer() { for (i=1; 6; i++) { // on incrémante le nom de l'id recherché var Div_nom = 'blocid' + i; // on recupère chaque objets DIV par son ID var obj= document.getElementById(Div_nom); obj.style.display='none'; } } Modifié 22 Février 2009 par libelinfo
Ugo Posté 22 Février 2009 Auteur Posté 22 Février 2009 Quel c** ! J'avais même pas pensé à faire une boucle for... Je débute en JavaScript... Alors parfois, ça coince ! Merci beaucoup :-) Amic', Ugo.
jmi Posté 22 Février 2009 Posté 22 Février 2009 Sinon ils peuvent simplement être en display:none directement dans la feuille de style.
destroyedlolo Posté 22 Février 2009 Posté 22 Février 2009 Sinon ils peuvent simplement être en display:none directement dans la feuille de style. Il me semble avoir lu dans la doc de scriptaculous que ca merdait avec certains navigateurs et qu'il devenait impossible de les faire apparaitre ...
Dudu Posté 23 Février 2009 Posté 23 Février 2009 Salut Sinon ils peuvent simplement être en display:none directement dans la feuille de style. C'est LA mauvaise idée par excellence ! La dégradation sans Javascript serait très mauvaise, car les blocs ne s'afficheraient pas.
jmi Posté 24 Février 2009 Posté 24 Février 2009 Salut C'est LA mauvaise idée par excellence ! Bien vu, je mérite quelques points pour le concours de la meilleure saucisse ;-)
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant