Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1785 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] REmplacer la valeur d'un form, select ou option dynamiquement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JS] REmplacer la valeur d'un form, select ou option dynamiquement

n°1670298
guepe
J'ai du noir sur la truffe ?
Posté le 13-01-2008 à 01:21:07  profilanswer
 

J'ai écris un script qui fonctionne tres bien sous IE grace a la techno AJAX (innerHTML et autres) qui fonctionne tres bien sous firefox et plante sous IE (cf http://forum.hardware.fr/hfr/Progr [...] 1015_1.htm)
Je cherche a ecrire une methode pour IE, et je suis capable d'écrire du html, creer un bouton par exemple grace au code suivant :

Code :
  1. if(!document.getElementById("button_send" ))
  2.       {
  3.          element=  document.createElement("<input>" );
  4.          element.setAttribute("type", "button" );
  5.          element.setAttribute("id", "button_send" );
  6.          element.setAttribute("value", name);
  7.          element.setAttribute("name", "send_question" );
  8.          element.setAttribute("onclick", action);
  9.          document.getElementById(obj).appendChild(element);
  10.       }


 
Probleme : je cherche maintenant a écrire aussi mes menu deroulants (select et option) mais aussi à les détruire en fonction des actions de l'utilisateur.
Premiere probleme : je peut en créer autant que je veut, mais ils sont vides (impossible de mettre le texte du module option) :

Code :
  1. element=  document.createElement("<select>" );
  2.          element.setAttribute("id", "subform"+numCategory);
  3.          element.setAttribute("name", "category"+numCategory);
  4.          element.setAttribute("onchange", "getListDirectories(this.value,"+numCategory+" )" );
  5.          document.getElementById(obj).appendChild(element);
  6.          element= document.createElement("<option>" );
  7.          element.setAttribute("value", id_categorie);
  8.          document.getElementById(obj).appendChild(element);


Comment mettre du texte a option ? j'ai essaye un insertdata du type document.getElementById('option'+numCategory).insertData(0, text); apres avoir fait le appendChild, mais sans succes (erreur d'ie)
 
Deuxième probleme : j'aimerai aussi pouvoir supprimer un select (avec un getElementById) : comment faire ? J'ai cherche a ecrire quelque chose de vide, sans succes, faire un removeChild, j'ai essayé plein de fonctions trouvées à la page http://www.java2s.com/Code/JavaScr [...] ethods.htm mais je n'y arrive pas !
 
Je vous remercie d'avance, si vous avez la solution !


---------------
Un blog qu'il est bien
mood
Publicité
Posté le 13-01-2008 à 01:21:07  profilanswer
 

n°1670544
guepe
J'ai du noir sur la truffe ?
Posté le 13-01-2008 à 23:10:53  profilanswer
 

Bon j'ai mieux : pour remplacer les lignes suivantes qui fonctionnent tres bien sur firefox mais pas sous ie :

Code :
  1. if(clearlist==-2)
  2.          document.getElementById(obj).innerHTML = entete+pied;
  3.       else if(clearlist==-1)
  4.          document.getElementById(obj).innerHTML = entete+txtselect+txt+pied;
  5.       else
  6.          document.getElementById('subform'+numCategory).innerHTML = document.getElementById('subform'+numCategory).innerHTML + txt + pied;


 
J'ai écris un truc qui marche un peu (mais pas completement)

Code :
  1. if(clearlist==-2)
  2.       {
  3.          try{
  4.             document.getElementById(obj).outerHTML=entete+pied;
  5.          } catch(e){alert("clearlist==-2 :"+obj)}
  6.       }
  7.       else if(clearlist==-1)
  8.       {
  9.          try{
  10.             document.getElementById(obj).outerHTML=entete+txtselect+txt+pied;
  11.          } catch(e){alert("clearlist==-1 :"+obj)}
  12.       }
  13.       else
  14.       {
  15.          var oOption = document.createElement("OPTION" );
  16.          oOption.text=text;
  17.          oOption.value=id_categorie;
  18.          switch(numCategory)
  19.          {
  20.             case 1:
  21.                document.all.subform1.add(oOption);
  22.                break;
  23.             case 2:
  24.                document.all.subform2.add(oOption);
  25.                break;
  26.             case 3:
  27.                document.all.subform3.add(oOption);
  28.                break;
  29.             case 4:
  30.                document.all.subform4.add(oOption);
  31.                break;
  32.             case 5:
  33.                document.all.subform5.add(oOption);
  34.                break;
  35.             case 6:
  36.                document.all.subform6.add(oOption);
  37.                break;
  38.             case 7:
  39.                document.all.subform7.add(oOption);
  40.                break;
  41.             case 8:
  42.                document.all.subform8.add(oOption);
  43.                break;
  44.             case 9:
  45.                document.all.subform9.add(oOption);
  46.                break;
  47.             case 10:
  48.                document.all.subform10.add(oOption);
  49.                break;
  50.             case 11:
  51.                document.all.subform11.add(oOption);
  52.                break;
  53.             case 12:
  54.                document.all.subform12.add(oOption);
  55.                break;
  56.          }
  57.       }


C'est horrible le derniere  cas hein ?  :love:  
Bref, le comportement n'est pas parfait : parfois, dans le cas clearlist==-2 ou clearlist==-1 j'ai une erreur lancée, comme si l'objet cherché n'existait pas ! (je n'ai aucun soucis avec les 3 lignes pour firefox)
 
De plus, je n'ai pas trouvé de solution pour faire un document.all.VARIABLE.add(oOption); : il prend l'objet variable, et pas la string qu'elle représente, d'ou l'affreux switch case écrit !
 
Donc le résultat : quand l'utilisateur clique sur le premier menu deroulant et choisis une entrée, le second menu déroulant est créé, rempli correctement (le cas numero 3 fonctionne bien). Si je change la selection du premier menu déroulant et que celui efface tout (cas numero 1) ca fonctionne et je peut relancer tout ce que je veut. Par contre si le menu déroulant recrée un nouveau menu, alors j'ai des erreur lancée, mettons que document.all.subform1.add(oOption) renvoi une valeur nulle, comme si subform1 n'existait pas...
Bon enfin ca avance quand meme : avez vous une solution surtout pour eviter ce switch, le reste ca doit etre un bug a moi bien idiot !


---------------
Un blog qu'il est bien

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  [JS] REmplacer la valeur d'un form, select ou option dynamiquement

 

Sujets relatifs
[C] Ajouter une valeur a une variable lors de l'appui d'une toucheRentrer beaucoup de valeur.
Remplacer les iframe contenant du phpVBS - Récuperer la valeur d'une cellule excel
[Struts]Probleme récupération de la valeur d'un html:selectProblème avec un select
Excel: imposer une mise en forme selon valeur dans une case[PHP][DOM] balises select non envoyé au serveur
Pb avec imbrications de requete select SQL 
Plus de sujets relatifs à : [JS] REmplacer la valeur d'un form, select ou option dynamiquement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR