Probleme de calcule dynamique

farsicomores Messages postés 6 Date d'inscription jeudi 23 février 2006 Statut Membre Dernière intervention 11 mars 2011 - 8 mars 2011 à 20:13
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 - 12 mars 2011 à 21:18
Bonsoir!
Je suis entrain de faire un formulaire qui calcule un devis automatiquement. pour cela je crée des champs dynamiquement pour permettre de saisir autant des ligne que l'on veut. Pour ça je pense que le code marche.

Ensuite j'ai besoin de calculer dynamiquement le total des ses champs. le problème ce qu'il calcul la ère ligne mais pas les autres. j'ai récupéré le code de calcul par ici, merci de votre.
<html>
    
                                       |
DESIGNATION |
Qté |
P.U. |
TVA |
PRIX HT |
PRIX TTC |
 |
 |

  
   |
</html>

<script language="javascript">
//---------------
function Calcul(){

     var Ind=1,
  Obj   = null,
      Qte,
      Prix,
      Total = 0,
      Valeur;
  
  //-- tant que l'objet existe
  while( Obj = document.getElementById('qte')){
    //-- recup des valeurs
    Qte    = parseInt( Obj.value);

    Prix   = parseFloat( document.getElementById('pu').value);
Valeur = Qte * Prix;  // pas mis les tests si isNaN
    //-- affiche le resultat
    document.getElementById('montant').value = Valeur;
    //-- ajoute dans total
    Total += Valeur;
    //-- au suivant
    Ind ++;
  }
  //-- mets dans total
 // document.getElementById( "total").value = Total;
}

var Compteur = 0;
//--------------------------
function Delete_Ligne( obj_){
  var Parent;
  var Obj = obj_;
  if( Obj){
    //-- tant que pas la balise <TR>
    do{
       Obj = Obj.parentNode;
    }while( Obj.tagName != "TR")
    //-- Recup du parent
    Parent = Obj.parentNode;
    //-- Suppression de la ligne
    if( Parent){
      Parent.deleteRow( Obj.rowIndex)
    }
  }
}
//----------------------
function Create_Ligne(){
  //-- compteur pour le FUN
  Compteur++;
  //-- Get objet tableau
  var O_Table = document.getElementById('fact-tablee');
  //-- Get nombre de ligne du tableau
  var NbrLigne = O_Table.rows.length;
  //-- Position d'insertion
  var Pos = NbrLigne;
  //-- Insertion d'une ligne
  O_Row  = O_Table.insertRow( Pos);
   
  //-- Insertion des cellules
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = O_Row.rowIndex;
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '
 0

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = ' 
  

 
';
  
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '
0 € 

 
';
  
   
  O_Cell = O_Row.insertCell(-1);
  O_Cell.innerHTML = '

 
';
  
 O_Cell = O_Row.insertCell(-1);
 O_Cell.innerHTML = '

';  
}

</script>

2 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
11 mars 2011 à 16:34
Salut,

Un tag id doit être unique, du coup un while(getElementById('x')) n'as pas tellement de sens. D'ailleurs lorsque tu Create_Line() tu devrais mettre des id uniques, en concaténant le numéro de la ligne par exemple. Pour le calcul il suffit alors de faire une boucle sur le nombre de ligne du tableau en sommant les getElementById('qte' + lineNumber).Value

En espérant t'avoir mis sur une -bonne- piste
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
12 mars 2011 à 21:18
Attention encore au calcul, avec des centimes, le séparateur n'est pas la virgule en javascript mais le point. Il convient donc d'opérer des remplacements avant et après calcul...
0
Rejoignez-nous