11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour
J'ai besoin d'un conseil d'optimisation de mon code. Je suis nouvelle sur ce forum et je débute dans le langage javascript.

J'ai créer un menu utilisant le javascript (et css si javasctipt est désactivé...) et je cherchais à créer un bouton qui ouvre toutes les section du menu.

Pour info, il est basé sur une proposition de menu touvée sur ce forum :
http://forum.alsacreations.com/topic-23-7512-1-resolu-Menu-depliant--cacher-le-sous-menu-au-clic-sur-le-parent.html#p64647

Voici mon code pour ce "bouton/évenement" :
           
<a href="menu.html" title="Open all"

onclick="
var m1=document.getElementById('sm1');m1.style.display='block';
var m2=document.getElementById('sm2');m2.style.display='block';
var m3=document.getElementById('sm3');m3.style.display='block';
var m4=document.getElementById('sm4');m4.style.display='block';
var m5=document.getElementById('sm5');m5.style.display='block';
var m6=document.getElementById('sm6');m6.style.display='block';
var m7=document.getElementById('sm7');m7.style.display='block';
var m8=document.getElementById('sm8');m8.style.display='block';
var m9=document.getElementById('sm9');m9.style.display='block';
var m10=document.getElementById('sm10');m10.style.display='block';
var m11=document.getElementById('sm11');m11.style.display='block';
var m12=document.getElementById('sm12');m12.style.display='block';
var m13=document.getElementById('sm13');m13.style.display='block';
var m14=document.getElementById('sm14');m14.style.display='block';
var m15=document.getElementById('sm15');m15.style.display='block';
var m16=document.getElementById('sm16');m16.style.display='block';
var m17=document.getElementById('sm17');m17.style.display='block';
var m18=document.getElementById('sm18');m18.style.display='block';
var m19=document.getElementById('sm19');m19.style.display='block';
return false;">Tout ouvrir</a>


Le code fonctionne, toutes les sections s'ouvrent. Je cherche simplement à réduire ce code car il me semble un peu "lourd" Smiley ohwell .

Est-ce possible? Pouvez-vous m'indiquer une marche à suivre.
Merci
Modifié par Foson (11 Dec 2007 - 20:55)
Heuuuuu désolée, je me suis trompée dans le titre du sujet :
C'est bien Optimisation code pour ouvrir menu et non Optimisation code pour fermer menu... Smiley confused

Ok, je viens de voir qu'on pouvait étiter le titre du sujet Smiley confused Smiley confused Smiley confused

Donc ma question est bien sur la faisabilité d'optimiser ce code pour ouvrir toutes les sections...
Modifié par Foson (11 Dec 2007 - 20:57)
Hello,

tu as la réponse dans le sujet que tu cite (en adaptant un peu) Smiley cligne


function openAll()
{
  for (var i = 1; i<=19; i++) 
  {
    if (document.getElementById('sm'+i)) 
    {
      document.getElementById('sm'+i).style.display='block';
    }
  }
}


puis


<a href="menu.html" title="Open all" onclick="openAll()" />Tout ouvrir</a>


il y a moyen d'être encore plus propre en parcourant tout les "li" de la liste souhaité, mais tu devrais pouvoir le faire toi même en te basant sur l'exemple ci-dessus.

bon courage
J'ai cherché toute la soirée pour comprendre qu'il suffisait de réutiliser le code de départ comme tu me l'explique dans ta réponse. Smiley ravi

J'aurais dû revenir sur le forum plus tôt...

Un grand merci! Smiley biggrin