[JS] Cacher les lignes d'un tableau

Cacher les lignes d'un tableau [JS] - HTML/CSS - Programmation

Marsh Posté le 12-03-2008 à 18:31:34    

Bonjour,
je souhaite cacher/afficher les lignes d'un tableau contenant pas mal de ligne.
La méthode que j'utilise me permet seulement de cacher une ligne :
 

Code :
  1. <script type="text/javascript">
  2. <!--
  3. function switchMenu(obj) {
  4. var el = document.getElementById(obj);
  5. if ( el.style.display != "none" ) {
  6.  el.style.display = 'none';
  7. }
  8. else {
  9.  el.style.display = '';
  10. }
  11. }
  12. //-->
  13. </script>


 
(...)
 

Code :
  1. <p><a href="#" onclick="switchMenu('regional')";>afficher</a></p>


 
et ensuite je défini une encre sur une ligne :
 

Code :
  1. ]
  2.   <tr id="regional" class="classregional">


 
ca marche bien mais le problème se pose pour plusieurs lignes, sachant que l'id est unique. J'ai tenté via ByClassName mais sans réussite (je suis légé en js...).
 
Merci !


Message édité par endozen le 12-03-2008 à 18:33:45

---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Marsh Posté le 12-03-2008 à 18:31:34   

Reply

Marsh Posté le 12-03-2008 à 19:15:41    

Bah fait une boucle sur le tableau
 

Code :
  1. var table = document.getElementById("IdDuTableauDontTuVeuxCacherCertainesLignesMaisPasToutes" )
  2.  
  3. for (var i = 0; i < table.rows.length; i ++)
  4. {
  5.    var row = table.rows[i]
  6.  
  7.    if (row.className.indexOf("classregional" ) >= 0)
  8.        row.style.display = (row.style.display == "none" ? "" : "none" )
  9. }


 
Pas testé.

Reply

Marsh Posté le 12-03-2008 à 19:26:59    

merci beaucoup tpierron, j'ai pas le temps de tester ce soir, mais je te donnes des nouvelles demain!
 
c'est quand même dommage que la fonction getElementsByClassName n'existe pas. Ca serait un gain de temps certain!


---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Marsh Posté le 12-03-2008 à 20:18:45    

je ne comprends pas la ligne 7, peux tu m'en dire plus ? merci


---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Marsh Posté le 12-03-2008 à 21:04:31    

  • row.className => valeur de l'attribut class
  • row.className.indexOf => recherche la sous-chaine dans la chaine. Renvoie la position ou -1 si non trouvée.
  • C'est donc le filtre pour ton getElementsByClassName


Tu me diras, pourquoi pas faire plus simplement :

Code :
  1. if (row.className == "classregional" )


 
Parce que si tu spécifies plus d'une classe pour ton élément, ce test ne fonctionnera pas.


Message édité par tpierron le 12-03-2008 à 21:05:02
Reply

Marsh Posté le 12-03-2008 à 21:49:02    

Code :
  1. <style>
  2. .transport_regional {
  3. background-color: #DBDBDB;
  4. }
  5. .transport_national {
  6. background-color: #EBEBEB;
  7. border: thin solid #006699;
  8. }
  9. </style>
  10. <html>
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  13. <title>test java</title>
  14. </head>
  15. <script type="text/javascript">
  16. <!--
  17.   var table = document.getElementById("transport_tableau" )
  18.   for (var i = 0; i < table.rows.length; i ++)
  19.   {
  20.   var row = table.rows[i]
  21.   if (row.className == "transport_regional" )
  22.   row.style.display = (row.style.display == "none" ? "" : "none" )
  23.   }
  24. //-->
  25. </script>
  26. <body>
  27. <table id="transport_tableau">
  28. <tr class="transport_regional">
  29.     <td>test</td>
  30.     <td>test</td>
  31.     <td>test</td>
  32. <tr class="transport_national">
  33.    <td>test</td>
  34.    <td>test</td>
  35.    <td>test</td>
  36. </tr>
  37. </table>
  38. </body>
  39. </html>


 
voilà le code simplifié, la méthode ne marche pas malheureusement...


Message édité par endozen le 12-03-2008 à 21:49:21

---------------
EOS 5D mk II | 17-40 f/4 L USM | 50 f/1.4 USM | 135 f/2 L USM
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed