Création de champs "hidden" en utilisant DOM - HTML/CSS - Programmation
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...
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>
Marsh Posté le 03-08-2004 à 22:57:45
gm_superstar a écrit : Tiens, je savais pas qu'il existait des éléments <hidden> |
man hidden
Marsh Posté le 03-08-2004 à 23:06:50
Ok, gm_superstar , 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...
Marsh Posté le 03-08-2004 à 23:17:22
Et après ? Tu l'ajoutes à ton formulaire au moins ?
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...
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 : |
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
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);
Marsh Posté le 03-08-2004 à 23:44:26
Yep ça a l'air de marcher...
Merci beaucoup pour ton aide gm_superstar...
Marsh Posté le 04-08-2004 à 14:57:19
Bon, je sais j'abuse un peu , 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 ...
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()
Marsh Posté le 04-08-2004 à 23:06:46
gm_superstar 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" ); ) 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...
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 : |
Je sais pas comment est fait ton document HTML, mais niveau syntaxe ça m'a l'air correct.
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
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...
Marsh Posté le 05-08-2004 à 20:33:34
gatsusat a écrit : je me serait moins fait chier que toi |
Oui et puis surtout le DIV sert à rien, vu que les <input type="hidden"> sont, par définition, non visibles.
gatsusat a écrit : |
Ben avec l'autre méthode aussi...
gatsusat a écrit : |
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
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... |
Ben si l'élément a été créé et ajouté au document, getElementById renvoi quelque chose
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...
Marsh Posté le 05-08-2004 à 20:56:19
essayes :
Code :
|
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...
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...