salut à tous

je suis en train de bosser sur un Js qui me permettrai de faire des insertion de champs de tout type dans un formulaire...

mon soucis actuel porte sur la définition de mon counter suivant la valeur de hiddenCounter recuperer (cf 2premiere lign du script):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/*on verifie si le champ hiddenCounter existe afin de definir counter*/
var hiddenCounter = document.getElementById('hiddenCounter').value;
var counter = (hiddenCounter > 0) ? hiddenCounter : 0;
 
function moreFields()
{
   counter++;
 
   /*on clone le noeud du passage à recréé*/
   var newFields = document.getElementById('readroot').cloneNode(true);
   /*on redefinit l'id de celui-ci*/
   var insert = 'insert_'
   newFields.id = insert + counter;
 
   /*on definit les noeuds enfant de ce dernier*/
   var newField = newFields.childNodes;
 
   for(var i=0;i<newField.length;i++)
   {
      /*on redefinit l'attibut for du noeud label à chaque label rencontrer*/
      if(newField[i].nodeName == 'LABEL')
      {
         var lastCibleLabel = newField[i].getAttribute("for");
         newCibleLabel = lastCibleLabel + counter;
         newField[i].setAttribute("for",newCibleLabel);
      }
      /*on initialise une variable tabindexMaxi pour enregistrement de la valeur maxi de tabindex pour le clone*/
      var tabindexMaxi = '';
 
      /*si on a un champs quelquonque de forulaire, on réassigne les attributs id pour concordance au label, et name pour recuperation POST*/
      if(newField[i].nodeName == 'INPUT' || newField[i].nodeName == 'SELECT' || newField[i].nodeName == 'TEXTAREA')
      {
         newField[i].setAttribute("id",newCibleLabel);
         newField[i].name = newField[i].name + counter;
         /*pour chaque champ de formulaire detecter, on ecrase la valeur de la variable tabindexMaxi afin de détecter la valeur maxi de tabindex pour réincrémenter */
         tabindexMaxi = newField[i].getAttribute("tabindex");
      }
   }
 
   /*on definit la valeur de depart du tabindex pour ce nouveau noeud cloner*/
   tabindexValue = tabindexMaxi * counter;
 
   /* on redefinit ensuite tout les tabindex du noeud cloner suivant counter et tabindexMaxi*/
   for(var i=0;i<newField.length;i++)
   {
      /*si on a des champs quelquonque de formulaire, on réassigne l'attribut tabindex*/
      if(newField[i].nodeName == 'INPUT' || newField[i].nodeName == 'SELECT' || newField[i].nodeName == 'TEXTAREA')
      {
         /*on incremente la valeur de tabulation*/
         tabindexValue++;
         /*si on est dans le cas exeptionnel des input de type="radio", c'est le même tabindex pour le paquet de radio*/
         if(newField[i].type == 'radio')
         {
            newField[i].setAttribute("tabindex",tabindexValue);
            /*on decremente tabindexValue apès redefinition*/
            tabindexValue--;
            /*on definit une variable de controle de detection de paquet de radio*/
            var detectionRadio = true;
         }
         else
         {
            /*si il y a eut precedment detection de radio, on redefinit la var de detection*/
            if(detectionRadio == true)
            {
               detectionRadio = false;
               /*on incremente de nouveau la valeur de tabulation*/
               tabindexValue++;
            }
            newField[i].setAttribute("tabindex",tabindexValue);
         }
      }
   }
 
   /*on insert ce noeud clone dans le formulaire avant l'element d'id writeroot*/
   var insertBeforeThis = document.getElementById('insertBeforeThis');
   insertBeforeThis.parentNode.insertBefore(newFields,insertBeforeThis);
 
   /*on redefinit aussi les tabindex suivant jusqu'a fin du formulaire*/
   var formulaireNodes = document.getElementByTagName("form").childNodes;
   for(i=0;formulaireNodes.length;i++)
   {
      if(formulaireNodes[i].id == 'insertBeforeThis') startTabindexDefinition = true;
 
      /*si on a des champs ou boutons quelquonque de formulaire, on réassigne l'attribut tabindex*/
      if(startTabindexDefinition && (formulaireNodes[i].nodeName == 'INPUT' || formulaireNodes[i].nodeName == 'SELECT' || formulaireNodes[i].nodeName == 'TEXTAREA'))
      {
         /*on incremente la valeur de tabulation*/
         tabindexValue++;
         /*si on est dans le cas exeptionnel des input de type="radio", c'est le même tabindex pour le paquet de radio*/
         if(formulaireNodes[i].type == 'radio')
         {
            formulaireNodes[i].setAttribute("tabindex",tabindexValue);
            /*on decremente tabindexValue apès redefinition*/
            tabindexValue--;
            /*on definit une variable de controle de detection de paquet de radio*/
            var detectionRadio = true;
         }
         else
         {
            /*si il y a eut precedment detection de radio, on redefinit la var de detection*/
            if(detectionRadio == true)
            {
               detectionRadio = false;
               /*on incremente de nouveau la valeur de tabulation*/
               tabindexValue++;
            }
            formulaireNodes[i].setAttribute("tabindex",tabindexValue);
         }
      }
   }
 
   /*on insert la valeur du compteur dans le champs hidden d'id hiddenCounter*/
   var newHiddenCounter = document.getElementById('hiddenCounter');
   newHiddenCounter.value = counter;
}
function afficheCounter()
{
   alert(counter);
}
j'ai pour essai pour l'instant, coté html, un input hidden comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
<input type="hidden" id="hiddenCounter" name="hidden_counter" value="10" />
mon problème est que ma variable counter est "undefined" alors qu'un alert sur document.getElementById('hiddenCounter').value me retourne 10...

pourquoi ma variable counter n'est pas definit depuis ma value de hiddenCounter ?

Merci d'avance pour votre aide