Bonjour à tous,
Je suis débutant en html/javascript et j'ai un problème sur un tableau html sur lequel j'utilise des javascript pour rajouter des lignes.
En fait, j'ai une page formulaire.php qui me crée un tableau en html.
Au bout de chaque ligne, j'ai des instances du script suivant, qui me permettent de remettre les valeurs de la ligne à 0, dupliquer la ligne et ajouter une ligne vierge.
Code :
- <script type=\"text/javascript\">
- var idx = $z;
- function new_name(el) {
- var s = el.getAttribute(\"name\" );
- s = s.replace (/\d+/, idx);
- el.setAttribute (\"name\", s);
- }
- function create_row(tr,duplicate) {
- var tr2 = tr.cloneNode (true);
- var list1 = tr.getElementsByTagName(\"select\" );
- var list2 = tr2.getElementsByTagName(\"select\" );
- idx++;
- for (var i = 0; i < list1.length; i++) {
- if (duplicate)
- list2[i].selectedIndex = list1[i].selectedIndex;
- if (!duplicate && list1[i].name.substr(0,5)!=\"jourc\" )
- list2[i].selectedIndex = \" \";
- new_name (list2[i]);
- }
- list1 = tr.getElementsByTagName(\"input\" );
- list2 = tr2.getElementsByTagName(\"input\" );
- for (i = 0; i < list2.length; i++) {
-
- if (! duplicate)
- list2[i].value = \" \";
- if (list1[i].value==\"oui\" )
- list2[i].value = list1[i].value;
- new_name (list2[i]);
- }
- var tbody = tr.parentNode;
- tbody.insertBefore (tr2, tr.nextSibling);
- }
- function delete_row(tr) {
- var list1 = tr.getElementsByTagName(\"select\" );
- for (var i = 0; i < list1.length; i++) {
- if (list1[i].name.substr(0,5)!=\"jourc\" )
- list1[i].selectedIndex = \" \";
- }
- var list1 = tr.getElementsByTagName(\"input\" );
- for (var i = 0; i < list1.length; i++) {
- if (list1[i].name.substr(0,7)==\"comment\" )
- list1[i].value = \" \";
- if (list1[i].name.substr(0,6)==\"efface\" )
- list1[i].checked = \"checked\";
- }
- }
- </script>
|
J'appelle ce script via ces commandes, au bout de chaque ligne du tableau:
Code :
- <a href=\"javascript:void(0)\" onclick=\"create_row(this.parentNode.parentNode,false)\">
- <IMG border='0' title='Ajouter' SRC='ajouter.gif' alt='+'></a>
- <a href=\"javascript:void(0)\" onclick=\"create_row(this.parentNode.parentNode,true)\">
- <IMG border='0' title='Dupliquer' SRC='dupliquer.gif' alt='d'></a>
- <a href=\"javascript:void(0)\" onclick=\"delete_row(this.parentNode.parentNode)\">
- <IMG border='0' title='Effacer' SRC='effacer.gif' alt='e'></a>
|
Le problème est que lorsque je valide ce formulaire, je fais des vérifications diverses sur le tableau. Dans l'hypothèse où l'une de ces vérifications s'est avérée négative, via un header je vais vers une page d'erreur et j'ai alors besoin de revenir au tableau via un back du navigateur.
Avec Firefox, pas de problème, les lignes ajoutées, dupliquées etc... s'affichent. Mais avec IE, toutes les lignes sur lesquelles javascript a été utilisé reviennent à leur état initial !
Je ne sais vraiment pas d'où cela vient, étant comme je vous l'ai dit un débutant en html, javascript.
Est-ce dû à un bug d'IE. Je pencherais plutôt pour un problème d'interpétation de mon code Javascript au retour sur le tableau, qui ne serait en fait pas exécuté par IE.
J'ai pas mal cherché sur le Web et sur ce forum, mais je n'ai pas trouvé de réponse satisfaisante.
Merci beaucoup pour votre aide.
Message édité par supelec2007 le 28-08-2006 à 14:13:30