[Résolu]document.getElementById qui bugge avec IE,mais marche avec FF

document.getElementById qui bugge avec IE,mais marche avec FF [Résolu] - HTML/CSS - Programmation

Marsh Posté le 23-12-2009 à 17:59:35    

Bonjour,
Je souhaite faire 2 listes déroulantes liées dynamiquement.
D'où l'emploi de l'ajax et de la librairie prototype pour essayer de faciliter les choses.
 
Voilà mon code:
Le premier fichier index.php

Code :
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  3. <head>
  4. <title>Socle</title>
  5. <meta http-equiv="content-language" content="fr" />
  6. <meta http-equiv="content-Type" content="text/html;charset=iso-8859-15" />
  7. <meta name="robots" content="noindex" />
  8. <style type="text/css">
  9. body  {
  10.  background-color: #D4EAFA;
  11.  color: #000066;
  12. }
  13. input {
  14.  background-color: #fff;
  15. }
  16. a {
  17.  text-decoration:none;
  18. }
  19. a:hover{
  20.  text-decoration:none;
  21. }
  22. p {
  23.  margin:0;
  24.  padding:0;
  25. }
  26. </style>
  27. <script type="text/javascript" src="mesfonctions.js"></script>
  28. <script type="text/javascript" src="lib/prototype.js"></script>
  29. </head>
  30. <body>
  31. <?php
  32. $table1='classe';
  33. $table2='socle';
  34. $table1_champ1='classe';
  35. $table2_champ1='classe';
  36. $table2_champ2='eleve';
  37.   include ('connexion.php');
  38.   //==========================================
  39.   //== on affiche dans un select la TABLE 1 ==
  40.   //==========================================
  41.   $res=mysql_query("SELECT * FROM $table1" );
  42.   $max=@mysql_num_rows($res);
  43.  ?>
  44.  
  45.  
  46.  
  47. <form method = "post" name = "socle" action="socle.php">
  48.  <p align ="center" >Socle</p>
  49.  <p>&nbsp;</p>
  50.  <p align = "center">
  51.  <select onChange="requete_ajax();" size="1" id="tb1" >
  52.   <?php
  53.   for ($nb=0;$nb<$max;$nb++)
  54.   {  $i=mysql_result($res,$nb,$table1_champ1);
  55.   echo '<option>'.$i.'</option>'; 
  56.   }
  57.   ?> 
  58.  </select>
  59.  <select   name="eleve" id="emplacement"   size=1>  </select>
  60.  </p>
  61.  <p>&nbsp;</p>
  62.         <p align="center"><input TYPE="submit" VALUE="Envoyer" ></p>
  63. </form>
  64. </body>
  65. </html>


 
Le fichier .js où est fait l'appel ajax:

Code :
  1. function requete_ajax() {
  2. var valeur = document.getElementById("tb1" ).value;
  3. alert (valeur);
  4. var parametres = 'classe='+valeur;
  5. var myAjax = new Ajax.Updater( 'emplacement' , 'remplir2ndselect.php' , { method: 'get', parameters: parametres } );
  6. }


 
Je ne poste pas le fichier appelé par le .js pour remplir le 2nd select car le problème ne se situe pas ici.
 
Le problème est sur la ligne:
var valeur = document.getElementById("tb1" ).value;
Sur Firefox, pas de souci, le alert renvoie la bonne valeur choisie dans le 1er select.
Mais, sous IE, ça bugge: le alert ne renvoie rien!!! :fou:  
 
Une idée ? (sachant que je suis une bille en javascript et que j'ai ptet laissé passer une grosse boulette). :hello:


Message édité par fabulon le 23-12-2009 à 21:05:02
Reply

Marsh Posté le 23-12-2009 à 17:59:35   

Reply

Marsh Posté le 23-12-2009 à 18:12:34    

Je ne sais pas si cela résoudra ton problème, mais tu dois faire le lien vers ta librairie avant tes propres scripts.

Reply

Marsh Posté le 23-12-2009 à 18:24:44    

J'ai interverti les 2 lignes faisant appel aux scripts, de manière à avoir en premier l'appel à la librairie, mais sans succès.
 
J'ai aussi biaisé le getelementbyid en tapant ceci:
var valeur = document.forms[0].elements[0].value;
Mais ça ne marche tj pas sous IE...

Reply

Marsh Posté le 23-12-2009 à 18:33:53    

Ton option n'as pas de value, tu dois récupérer un .text
http://www.codingforums.com/archiv [...] 55185.html

Reply

Marsh Posté le 23-12-2009 à 18:53:30    

Exact!!!
La solution qui marche (je viens de tester), c'est de mettre dans mon select où se situe l'id 'tb1' dont je veux récupérer la valeur est un value = dans le option.
 
Pour faire + clair:
au lieu de <option>des valeurs</option>
on met <option value='des valeurs'>des valeurs</option>
 
Sur mon prog, cela revient à faire ça:
echo '<option value="'.$i.'">'.$i.'</option>';
 
Merci!!!

Reply

Sujets relatifs:

Leave a Replay

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