farsicomores
Messages postés6Date d'inscriptionjeudi 23 février 2006StatutMembreDernière intervention11 mars 2011
-
8 mars 2011 à 20:13
007Julien
Messages postés276Date d'inscriptionmercredi 22 septembre 2010StatutMembreDerniè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>
cs_jopop
Messages postés1540Date d'inscriptionlundi 26 mai 2003StatutMembreDernière intervention 1 août 201312 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
007Julien
Messages postés276Date d'inscriptionmercredi 22 septembre 2010StatutMembreDernière intervention 8 janvier 20144 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...