[résolu]Comment attraper tous les noeud d'un même type dans un tableau

Comment attraper tous les noeud d'un même type dans un tableau [résolu] - HTML/CSS - Programmation

Marsh Posté le 29-03-2007 à 13:46:47    

Bonjour,
 
J'essaye d'agir sur des checkbox placé dans un tableau html comme ceci :
 
html :
 

Code :
  1. <table id="tableau">
  2. <tr><td>code</td><td>libelle</td></tr>
  3. <tr><td><input type="checkbox" ....></td><td>Rouge</td></tr>
  4. <tr><td><input type="checkbox" ....></td><td>Jaune</td></tr>
  5. <tr><td><input type="checkbox" ....></td><td>Vert</td></tr>
  6. </table>


 
Mon script  
 

Code :
  1. function GereChkbox( a_faire) {
  2. var blnEtat=null;
  3. var Chckbox = document.getElementById("tableau" ).getElementsByTagName('tr')[0].getElementsByTagName('td')[0].getElementsByTagName('*');
  4. while (Chckbox!=null)
  5. { alert(Chckbox.nodeName);
  6.  if (Chckbox.nodeName=="input" )
  7.   if (Chckbox.getAttribute("type" )=="checkbox" )
  8.   {
  9.    blnEtat = (a_faire=='0') ?
  10.    false : (a_faire=='1') ?
  11.    true : (document.getElementById(Chckbox.getAttribute("id" )).checked) ?
  12.     false : true;
  13.    document.getElementById(Chckbox.getAttribute("id" )).checked=blnEtat;
  14.   }
  15.  Chckbox = Chckbox.nextSibling;
  16. }
  17. }


 
Mais je n'arrive qu'à lite le 1er TD du 1er TR alors que je voudrais lire tous les td.
 
Une idée sur ce genre de problème ?
 
Merci d'avance


Message édité par pierre419 le 29-03-2007 à 22:09:13
Reply

Marsh Posté le 29-03-2007 à 13:46:47   

Reply

Marsh Posté le 29-03-2007 à 13:53:49    

Ca me paraît logique que tu n'arrives qu'à lire le premier td, vu que tu ne sélectionne que le premier td au lieu d'itérer...

Reply

Marsh Posté le 29-03-2007 à 14:02:25    

Code :
  1. var Chckbox = document.getElementById("tableau" ).getElementsByTagName('input');

 
:o

Reply

Marsh Posté le 29-03-2007 à 19:21:18    

anapajari a écrit :

Code :
  1. var Chckbox = document.getElementById("tableau" ).getElementsByTagName('input');

 
:o


 
Merci, mais je ne passe pas la ligne
 

Code :
  1. if (Chckbox.nodeName=="input" )

Reply

Marsh Posté le 29-03-2007 à 22:08:36    

La soluce c'est ça
 

Code :
  1. function GereChkbox(conteneur, a_faire)
  2. {
  3. var blnEtat=null;
  4. var Chckbox = document.getElementById(conteneur).getElementsByTagName('input');
  5. for (i in Chckbox)
  6. {
  7.  if (Chckbox[i].nodeName=="INPUT" )
  8.  if (Chckbox[i].getAttribute("type" )=="checkbox" ) {
  9.   blnEtat = (a_faire=='0') ? false : (a_faire=='1') ? true : (document.getElementById(Chckbox[i].getAttribute("id" )).checked) ? false : true;
  10.   document.getElementById(Chckbox[i].getAttribute("id" )).checked=blnEtat;
  11.  }
  12. }
  13. }


 
Merci à vous

Reply

Marsh Posté le 30-03-2007 à 08:41:52    

waouhhh peux tu m'expliquer l'interêt de la ligne suivante:

Code :
  1. document.getElementById(Chckbox[i].getAttribute("id" )).checked


Pourquoi ne pas écrire directement:

Code :
  1. Chckbox[i].checked


 
Par ailleurs je te deconseille d'utiliser la syntaxe for ( i in ...) quand tu sais pas très bien ce que tu manipules ( tu peux te retrouver avec les methodes d'un objet itérés avec cette méthode) et de lui préférer "for(var i=0; i<tableau.lenght; i++)"

Reply

Sujets relatifs:

Leave a Replay

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