Création de champs "hidden" en utilisant DOM

Création de champs "hidden" en utilisant DOM - HTML/CSS - Programmation

Marsh Posté le 03-08-2004 à 22:25:37    

Salut à tous,
 
J'vous explique mon problème :
 
J'ai un formulaire et je souhaite créer des champs "hidden" rattachés à ce formulaire. Pour ce faire, j'utilise le code suivant, où NameData est une variable définie plus tôt :
 
var TempData = document.createElement("hidden" );
var SetData = document.createAttribute("name" );
SetData.nodeValue = NameData;
TempData.setAttributeNode(SetData);

 
Le problème est qu'ensuite je bloque !!!...
 
Je ne réussis pas à rattacher mon champs "hidden" à mon formulaire ( pour pouvoir ensuite envoyer les données vers une page qui traitera tous les champs du formulaire ), ni à donner une valeur au champs "hidden" dont le nom est NameData...
 
Quelqu'un peut-il m'aider ?!?...
 
Merci d'avance...

Reply

Marsh Posté le 03-08-2004 à 22:25:37   

Reply

Marsh Posté le 03-08-2004 à 22:44:46    

Par exemple, j'ajoute un attribut id ( valeur de cet attribut " formulaire" ) à ma balise <form> et je pensais que cette ligne pourrait fonctionner mais non :
 
document.getElementById('formulaire').appendChild(TempData);
 
J'comprends pas...


Message édité par Solo13 le 03-08-2004 à 22:45:22
Reply

Marsh Posté le 03-08-2004 à 22:50:31    

Solo13 a écrit :

var TempData = document.createElement("hidden" );


Tiens, je savais pas qu'il existait des éléments <hidden>


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-08-2004 à 22:57:45    

gm_superstar a écrit :

Tiens, je savais pas qu'il existait des éléments <hidden>


 
[:itm]
 
man hidden http://forum.hardware.fr/icones/icon12.gif


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 03-08-2004 à 23:06:50    

Ok, gm_superstar :whistle: , donc ce code là devrait-il mieux marcher ?!?... :
 
var TempData = document.createElement("input" );
TempData.setAttribute("type","hidden" );
TempData.setAttribute("name",NameData);
TempData.setAttribute("value","1" );

 
Appremment, ça ne marche pas, je ne réussis pas à récupérer la valeur de l'élément dont le nom est NameData...
 
Merci encore pour cet indice...


Message édité par Solo13 le 03-08-2004 à 23:08:21
Reply

Marsh Posté le 03-08-2004 à 23:17:22    

Et après ? Tu l'ajoutes à ton formulaire au moins ?


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-08-2004 à 23:25:04    

Ben pour tout te dire je ne sais pas comment faire pour l'ajouter à mon formulaire :(  :??: ...
 
Mais pour vérifier si ça fonctionne j'ai créé un élément <span id="Test">Valeur</span> dont je modifie le contenu par :
 
document.getElementById('Test').firstChild.nodeValue=document.all[NameData].value;
 
Ca devrait marcher, même si je n'ajoute pas mon élément à mon formulaire, mais ça ne marche pas...


Message édité par Solo13 le 03-08-2004 à 23:25:47
Reply

Marsh Posté le 03-08-2004 à 23:32:43    

Solo13 a écrit :

Ben pour tout te dire je ne sais pas comment faire pour l'ajouter à mon formulaire :(  :??: ...


ton_element.appendChild(TempData);
 

Solo13 a écrit :


Mais pour vérifier si ça fonctionne j'ai créé un élément <span id="Test">Valeur</span> dont je modifie le contenu par :
 
document.getElementById('Test').firstChild.nodeValue=document.all[NameData].value;
 
Ca devrait marcher


Ben non ça marche pas, tu tentes d'accéder à un élément d'un document où il n'a pas été ajouté. Pour l'instant il est toujours hors de l'arbre DOM du document, il n'existe que dans le contexte de ta fonction JS et sera détruit à la fin de celle-ci.
 
Ajoute aussi un "id" à ton élément ça évitera de recourir à l'infâme document.all


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 03-08-2004 à 23:37:02    

Donc si mon formulaire est du type <form id="formulaire">, ce qui suit devrait marcher ?!?...:  
 
document.getElementById('formulaire').appendChild(TempData);


Message édité par Solo13 le 03-08-2004 à 23:37:35
Reply

Marsh Posté le 03-08-2004 à 23:44:26    

Yep ça a l'air de marcher...
 
Merci beaucoup pour ton aide gm_superstar...

Reply

Marsh Posté le 03-08-2004 à 23:44:26   

Reply

Marsh Posté le 04-08-2004 à 14:57:19    

Bon, je sais j'abuse un peu :D , mais est-ce que tu pourrais me dire s'il existe un truc pour avoir accès à ces éléments  :??: ?!?...
 
Je souhaiterais pouvoir afficher les valeurs des éléments ainsi créés sans avoir à soumettre un formulaire...
 
Sinon, merci encore pour ton aide hier soir :jap: ...


Message édité par Solo13 le 04-08-2004 à 14:58:21
Reply

Marsh Posté le 04-08-2004 à 22:09:00    

Ben comme je l'ai dit, tu donnes un "id" à tes éléments et tu y accèdes avec getElementById()


Message édité par gm_superstar le 04-08-2004 à 22:09:26

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 04-08-2004 à 23:06:46    

gm_superstar a écrit :


Ben non ça marche pas, tu tentes d'accéder à un élément d'un document où il n'a pas été ajouté. Pour l'instant il est toujours hors de l'arbre DOM du document, il n'existe que dans le contexte de ta fonction JS et sera détruit à la fin de celle-ci.


 
Donner un Id à ces éléments ( ceux créés par le code document.createElement en insérant le code TempData.setAttribute("id","Id_Element" ); ) me permettra donc d'y accéder ( par getElementById ) et d'afficher leur valeur, n'importe où sur le document, c'est ça ?!?...
 
Ce code là devrait donc marcher ?!?... :
 
document.getElementById('Test').firstChild.nodeValue=document.getElementById('Id_Element').getAttribute('value');
 
Et même si ça fait un peu lèche, encore merci pour tes conseils et ton temps...


Message édité par Solo13 le 04-08-2004 à 23:09:34
Reply

Marsh Posté le 04-08-2004 à 23:21:58    

Solo13 a écrit :

Donner un Id à ces éléments ( ceux créés par le code document.createElement en insérant le code TempData.setAttribute("id","Id_Element" ); )


Pour celui là, il y a même un raccourci : tempData.id = "tonId";

Solo13 a écrit :

me permettra donc d'y accéder ( par getElementById ) et d'afficher leur valeur, n'importe où sur le document, c'est ça ?!?...


ouaip

Solo13 a écrit :


Ce code là devrait donc marcher ?!?... :
 
document.getElementById('Test').firstChild.nodeValue=document.getElementById('Id_Element').getAttribute('value');


Je sais pas comment est fait ton document HTML, mais niveau syntaxe ça m'a l'air correct.


---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 05-08-2004 à 09:52:26    

je me serait moins fait chier que toi
j'aurai foutu un <div style="visibility : hidden" id="MonDiv"></div>
 
Puis en javascript j'aurait fait un truc du genre :  
document.MonDiv.write('<input type="hidden" id="sonNom" name="sonNom" value="1">')
ca fait moins lisible je l'avoue
mais au moins tu es sur de faire ce que tu veux et de creer les élément de formulaire que tu veux.
 
Pour ma part je ne trouve presque aucune documentation sur la méthode CreateElement de l'objet Document

Reply

Marsh Posté le 05-08-2004 à 14:18:57    

@ gm_superstar
Merci beaucoup, effectivement tout marche nickel...
 
@ gatsusat
Ben en fait, je veux pouvoir éliminer les éléments "hidden" ainsi créés, et je ne savais pas le faire avec ta méthode... Ceci étant dit, si tu as quelquechose à proposer, je suis preneur...
 
 
Sinon, encore une petite difficulté : Je souhaite afficher la valeur de ces éléments, qu'ils aient déjà été créés ( par exemple, je sais qu'un maximum de 30 éléments pourront être créés ) ou non ( et dans ce cas, j'affiche par exemple 0 ), mais je dois pouvoir tester si ces éléments ont déjà été créés...
 
J'ai trouvé une ou deux bidouilles qui me permettent de savoir quels sont les éléments créés, notamment en insérant dans mon document des variables dont la valeur change à la création de l'élément, mais j'aurais aimé savoir s'il existait une instruction simple et rapide permettant de savoir si un élément existe...


Message édité par Solo13 le 05-08-2004 à 20:34:00
Reply

Marsh Posté le 05-08-2004 à 20:33:34    

gatsusat a écrit :

je me serait moins fait chier que toi
j'aurai foutu un <div style="visibility : hidden" id="MonDiv"></div>
 
Puis en javascript j'aurait fait un truc du genre :  
document.MonDiv.write('<input type="hidden" id="sonNom" name="sonNom" value="1">')
ca fait moins lisible je l'avoue


Oui et puis surtout le DIV sert à rien, vu que les <input type="hidden"> sont, par définition, non visibles.

gatsusat a écrit :


mais au moins tu es sur de faire ce que tu veux et de creer les élément de formulaire que tu veux.


Ben avec l'autre méthode aussi...

gatsusat a écrit :


Pour ma part je ne trouve presque aucune documentation sur la méthode CreateElement de l'objet Document


Bah c'est pas une méhode bien compliquée...
 
http://www.mozilla.org/docs/dom/do [...] ml#1025906
http://msdn.microsoft.com/workshop [...] lement.asp
http://www.w3.org/TR/2000/REC-DOM- [...] 2141741547


Message édité par gm_superstar le 05-08-2004 à 20:34:13

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 05-08-2004 à 20:35:30    

Solo13 a écrit :

Sinon, encore une petite difficulté : Je souhaite afficher la valeur de ces éléments, qu'ils aient déjà été créés ( par exemple, je sais qu'un maximum de 30 éléments pourront être créés ) ou non ( et dans ce cas, j'affiche par exemple 0 ), mais je dois pouvoir tester si ces éléments ont déjà été créés...
 
J'ai trouvé une ou deux bidouilles qui me permettent de savoir quels sont les éléments créés, notamment en insérant dans mon document des variables dont la valeur change à la création de l'élément, mais j'aurais aimé savoir s'il existait une instruction simple et rapide permettant de savoir si un élément existe...


Ben si l'élément a été créé et ajouté au document, getElementById renvoi quelque chose :??:


Message édité par gm_superstar le 05-08-2004 à 20:35:55

---------------
Incongru : une FAQ abandonnée sur les Standards du Web - FAQ périmée de blabla@Prog
Reply

Marsh Posté le 05-08-2004 à 20:41:45    

Ben s'il a été créé effectivement je n'ai pas de problème, c'est plutôt le cas où il n'a pas encore été créé qui m'ennuie... Je cherche une instruction qui m'indique justement que l'élément n'a pas été créé encore...
 
Je pensais que le code suivant fonctionnerait :
 
if ( document.getElementById(Id_Element) ) { affichage de la valeur }
else { on affiche un message qui indique que le champs n'a pas été créé }

 
en pensant que document.getElementById(Id_Element) envoyait true si l'élément existe et false sinon... Mais apparemment non...


Message édité par Solo13 le 05-08-2004 à 20:42:08
Reply

Marsh Posté le 05-08-2004 à 20:56:19    

essayes :

Code :
  1. if ( document.getElementById(Id_Element) != null ) {
  2. //affichage de la valeur  
  3. }
  4. else
  5. {
  6. // on affiche un message qui indique que le champs n'a pas été créé  
  7. }


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 06-08-2004 à 10:14:00    

Ca l'fait simogeo, merci...
 
Bon ben merci beaucoup à tous les gars, tout marche comme je le souhaite...

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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