[RESOLU] acces à un div dont le nom est dynamique

acces à un div dont le nom est dynamique [RESOLU] - HTML/CSS - Programmation

Marsh Posté le 09-09-2003 à 12:12:36    

Bonjour,
 
j'ai une page qui génère (php/mysql) des tables qui sont encadrées par des div nommé "à la volé":  
 
du genre :
 

Code :
  1. <div id="GG0125" style="display:none">
  2.    <table>  etc ...  </table>
  3. </div>
  4. <div id="45GG02" style="display:none">
  5.    <table>  etc ...  </table>
  6. </div>
  7. <div id="FR45UI" style="display:none">
  8.    <table>  etc ...  </table>
  9. </div>


 
par défaut : aucune de ces tables ne s'affichent, et c'est ce que je veux !
 
j'ai ensuite un select (dynamique aussi) qui appelle un javascript :
 

Code :
  1. <select name="nocol" onchange="affiche_facture()">
  2. <option value="12¤45¤FR45UI"> blah blah </option>
  3. <option value="12¤45¤45GG02"> blah blah </option>
  4. <option value="12¤45¤GG0125"> blah blah </option>
  5. </select>


 
le but etant d'afficher seulement le div concerné au laché du select ...
 
mon javascript :  
 

Code :
  1. function affiche_facture() {
  2. var chaine=document.enquete.nocol.value;
  3. var tableau=chaine.split('¤');
  4. nofact=tableau[2];
  5.         document.nofact.style.display="";
  6. }


 
et ca marche po ...   :pfff:  
en fait c'est l'élément nofact qui n'est pas interprété dans la ligne "document.nofact.style.display="";"  parce que si je fait : alert(nofact), j'ai la bonne valeur ...
 
des idées ??
(j'suis vraiment pas un pro du js)


Message édité par arsenick69 le 09-09-2003 à 16:23:32

---------------
L'arsenic est present a l'etat de traces dans toutes matieres vivantes. www.arsenick.net
Reply

Marsh Posté le 09-09-2003 à 12:12:36   

Reply

Marsh Posté le 09-09-2003 à 12:30:52    

c'est normal, il cherche l'élément 'nofact' dans ton document html, et pas sa valeur.
 
un simple getElementById(nofact) sera bien plus efficace.

Reply

Marsh Posté le 09-09-2003 à 13:14:00    

merci de ta réponse .. mais ca marche toujours po ...
j'ai une erreur javascript : Objet requis ...
 
 


---------------
L'arsenic est present a l'etat de traces dans toutes matieres vivantes. www.arsenick.net
Reply

Marsh Posté le 09-09-2003 à 13:17:12    

Montre un peu comment tu l'utilises.

Reply

Marsh Posté le 09-09-2003 à 13:27:48    

Code :
  1. function affiche_facture() {
  2. var chaine=document.enquete.nocol.value;
  3. var tableau=chaine.split('¤');
  4. nofact=tableau[2]+tableau[3]+tableau[4];
  5. document.getElementById(nofact).style.display="";
  6. }


 
pour le reste cf premier post


---------------
L'arsenic est present a l'etat de traces dans toutes matieres vivantes. www.arsenick.net
Reply

Marsh Posté le 09-09-2003 à 13:29:34    

retire le document.

Reply

Marsh Posté le 09-09-2003 à 13:49:49    

ben avec
 
function affiche_facture() {
 var chaine=document.enquete.nocol.value;
 var tableau=chaine.split('¤');
 nofact=tableau[2]+tableau[3]+tableau[4];
 getElementById(nofact).style.display="";
}
 
ca change le message d'erreur : Objet attendu ...
c'est comme ci "nofact" n'etait pas interprété comme une variable ...


---------------
L'arsenic est present a l'etat de traces dans toutes matieres vivantes. www.arsenick.net
Reply

Marsh Posté le 09-09-2003 à 15:26:47    

:bounce:


---------------
L'arsenic est present a l'etat de traces dans toutes matieres vivantes. www.arsenick.net
Reply

Marsh Posté le 09-09-2003 à 15:30:59    

Code :
  1. <html>
  2. <head>
  3. </head>
  4. <script language=javascript>
  5. function affiche_facture()
  6. {
  7.      var chaine=document.enquete.nocol.value;
  8.      var tableau=chaine.split('¤');
  9.      nofact=tableau[2];
  10.      alert("nofact : "+nofact);
  11.      document.getElementById(nofact).style.display="";
  12. }
  13. </script>
  14. <body>
  15. <div id="GG0125" style="display:none">
  16.      <table>  etc ...  </table>
  17.   </div>
  18.   <div id="45GG02" style="display:none">
  19.      <table>  etc ...  </table>
  20.   </div>
  21.   <div id="FR45UI" style="display:none">
  22.      <table>  etc ...  </table>
  23.   </div>
  24. <form name="enquete">
  25. <select name="nocol" onchange="affiche_facture()">
  26.   <option value="12¤45¤FR45UI"> blah blah </option>
  27.   <option value="12¤45¤45GG02"> blah blah </option>
  28.   <option value="12¤45¤GG0125"> blah blah </option>
  29.   </select>
  30. </form>
  31. </body>
  32. </html>


 
chez moi ca marche sauf que ca ne desactive pas les div non selectionnees...
mais aucun message d'ereur !


---------------
NP :
Reply

Marsh Posté le 09-09-2003 à 15:42:32    

cool moi aussi !
 :jap:  
 
bon ben il ne me reste plus qu'a faire disparaitre les autres div ... kkun a une idée pour parcourir la liste des div et les passer à "display:none"


---------------
L'arsenic est present a l'etat de traces dans toutes matieres vivantes. www.arsenick.net
Reply

Marsh Posté le 09-09-2003 à 15:42:32   

Reply

Marsh Posté le 09-09-2003 à 15:46:59    

En plus de l'id tu peux donner une "class" à tes <div> et les sélectionner comme ça :
http://www.cookiecrook.com/webx/getElementByClass.htm#

Reply

Marsh Posté le 09-09-2003 à 15:57:42    

Je sais que j'utilise ca mais je ne suis pas sur de la compatibilité. ( utilisé dans le cadre d'un intranet avec IE pour tous les postes clients )
 
document.all.tags("DIV" )


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 09-09-2003 à 15:57:53    

function affiche_facture() {
 
for (i=1;i<document.enquete.nocol.length;i++) {
  var valeur=document.enquete.nocol.options[i].value;  
  tableau=valeur.split('¤');  
  nofact=tableau[2]+tableau[3]+tableau[4];
  document.getElementById(nofact).style.display="none";  
}
 var chaine=document.enquete.nocol.value;
 var tableau=chaine.split('¤');
 nofact=tableau[2]+tableau[3]+tableau[4];
 document.getElementById(nofact).style.display="";
}
 
 
par contre Lord II : tu l'utilises comment ta commande ?
parceque ca :  
document.all.tags("DIV" ).style.display="none"; ca marche po chez moi ...


Message édité par arsenick69 le 09-09-2003 à 16:01:01

---------------
L'arsenic est present a l'etat de traces dans toutes matieres vivantes. www.arsenick.net
Reply

Marsh Posté le 09-09-2003 à 16:04:53    

C'est un petit plus complexe :

Code :
  1. var coll=document.all.tags("DIV" );
  2. if ( coll != null )
  3.  {
  4.  for(i=0;i<coll.length;i++)
  5.   {
  6.          document.all(coll[i].id).style.display='none';
  7.   }
  8.  }
  9. }


---------------
La bave du crapaud n'empèche pas la caravane de passer .
Reply

Marsh Posté le 09-09-2003 à 16:15:02    

merci à tous pour vos précieux conseils !!!    :jap:   :jap:  
 
 
juste pour le plaisir, je poste la fonction nettoyée :
 

Code :
  1. function affiche_facture() {
  2. for (i=1;i<document.enquete.nocol.length;i++) {
  3. tableau=document.enquete.nocol.options[i].value.split('¤');
  4. document.getElementById(tableau[2]+tableau[3]+tableau[4]).style.display="none";
  5. }
  6. if (document.enquete.nocol.value!="" ) {
  7. tableau=document.enquete.nocol.value.split('¤');
  8. document.getElementById(tableau[2]+tableau[3]+tableau[4]).style.display="";
  9. }
  10. }



Message édité par arsenick69 le 09-09-2003 à 16:15:43

---------------
L'arsenic est present a l'etat de traces dans toutes matieres vivantes. www.arsenick.net
Reply

Sujets relatifs:

Leave a Replay

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