Bonjour à tous, pour les besoins de mon site, j'ai été amené à créer une fonction en javascript qui répartie un montant entré dans un champs de type texte (montantacompte) entre plusieurs postes issus d'un ensemble de facture répartis selon divers textes de lois, en fait cela se présente sous la forme du tableau sous jacent:

Nom : Sans titreeeeee.png
Affichages : 150
Taille : 1,70 Mo

le script que j'ai fonctionnait parfaitement, je ne sais pas pourquoi mais il ne fonctionne plus comme avant.

Tout d'abord voici le 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
 <script type="text/javascript">
 function getItems()
 {
 var items = new Array();
 var itemCount = document.getElementsByClassName("items");
 
 for(var i = 0; i < itemCount.length; i++)
 {
     items[i] = document.getElementById("p" + (i+1)).value;
 }
 
 return items;
 }
 
 function setItems(items,payAmt)
 {
   //document.getElementById("montantacompte").value = payAmt;
   for(var i = 0; i < items.length; i++)
   {
      document.getElementById("p" + (i+1)).value = Math.round(items[i]*100)/100;
   }
 }
 
 function itemSum(items)
 {
var sum = 0;
 
for(var i=0; i < items.length; i++)
{
    sum = items[i] + sum;
}
 
return sum;
 }
 
 function payment(montantacompte)
 {
 var items = getItems();
 var payAmt = document.getElementById("montantacompte").value;
 var i = 0;
 var sum = itemSum(items);
 
 while(payAmt != 0 && sum != 0)
 {
     var temp = items[i] - payAmt;
     if(temp > 0)
     {
         items[i] = temp;
         break;
     }
     else if(temp < 0)
     {
         items[i] = 0;
         payAmt = temp*-1;
      }
     i++;
     sum = itemSum(items);
 }
 
  setItems(items, payAmt);
 }
 
</script>
donc toute la colonne de gauche intitulée montant initial, chaque champs porte une id allant de a1 à a13

pour le champ montant imputé, en fait il réparti l'acompte entre les différents postes, par exemple si j'ai 1500 € en principal et que j'ai 1000€ d'acompte alors apparaîtra 1000 € dans ce champs en revanche si l'acompte est supérieur apparaîtra bien plus mais pas plus que le montant initial.

Ces champs sont identifies par une id allant de r1 à r13.

Et dans la colonne suivant montant restant apparaît la différence entre ce qui est initialement et ce qui reste. ces colonnes sont identifiées de p1 à p13.

par exemple si dans le passé il y a déjà eu un acompte ces montants sont repris dans ce qui restait.

Le soucis que j'ai c'est que systématiquement le script travail avec 19254 même si dans montant acompte je ne mets que 50€ ou 1 €. Je ne comprend pas pourquoi car dans le champs montant acompte il est bien repris dans le script grâce a son id.

par avance merci pour votre aide.