sakura151
Messages postés10Date d'inscriptionlundi 24 octobre 2005StatutMembreDernière intervention14 mars 2009
-
8 oct. 2008 à 11:54
sakura151
Messages postés10Date d'inscriptionlundi 24 octobre 2005StatutMembreDernière intervention14 mars 2009
-
8 oct. 2008 à 17:51
Bonjour,
Dans un tableau HTML, je dois calculer lors de l'entrée de la quantité, le sous-total est le total.
Voilà ce que j'ai fais... Mais il y a un problème : lorsque je change une quantité, le sous-total se met bien à jour mais le total ajoute la nouvelle quantité mais ne met pas à jour l'ensemble.
Je crois que je devrais passer tout en tableau ? Mais je suis débutante et ne sais pas comment faire ?
Dois-je vraiment passer en tableau ? Et comment cela se programme t-il ?
Source
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<title>Formulaire Commande Village du Larzac</title>
<META HTTP-EQUIV= "Content-Type" CONTENT="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="style.css">
<script src="village.js" type="text/javascript"></script>
</HEAD>
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 8 oct. 2008 à 12:15
bonjour,
et tu es sûr que tout ça nous était utile ? le css par exemple ? indispensable ?
>>Dois-je vraiment passer en tableau ?
tes tableaux tu les as déjà !
document.getElementByid("nombreterroir"+i )
document.getElementById("prixterroir"+i)
>>mais le total ajoute la nouvelle quantité mais ne met pas à jour l'ensemble.
pas compris ce que tu veux dire.
sakura151
Messages postés10Date d'inscriptionlundi 24 octobre 2005StatutMembreDernière intervention14 mars 2009 8 oct. 2008 à 14:06
Oui, désolée pour le css et effectivement erreur : "calcul_total_prix_terroir();" n'a rien à faire là (c'était pendant un test)
Mais ce qui me pause un soucis c'est dans le calcul du total :
la première fois que l'on entre les quantité : tout va bien, par contre quand après on change un des quantité : le sous-total est correct mais le total est faux : il ajoute la nouvelle quantité mais ne recalcul pas tout
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 8 oct. 2008 à 15:15
Bien le bonjour, c'est bien complexe pour faire une simple addition multiplication non ?
Essais avec cette méthode
function calcul_prix_terroir(){
var dernierPrixterroir = 0;
for(i=1;i<8;i++){
var nombreterroir=document.getElementById("nombreterroir"+i).value;
var prixterroir=document.getElementById("prixterroir"+i).value;
var prixTotalterroir=nombreterroir * (Math.round(prixterroir*100))/100;
document.getElementById("prix_totalterroir"+i).value=prixTotalterroir;
dernierPrixterroir +=prixTotalterroir;
}
document.getElementById("finterroir").value = dernierPrixterroir;
}
et supprime la variable globale dernierPrixterroir, ça devrait marcher mieux
[o-_-o]
Vous n’avez pas trouvé la réponse que vous recherchez ?
sakura151
Messages postés10Date d'inscriptionlundi 24 octobre 2005StatutMembreDernière intervention14 mars 2009 8 oct. 2008 à 15:40
Oui, ça marche beaucoup mieux en mettant la variable à l'intérieur de la fonction.
Mais avec ceci j'ai un autre problème : en fait je calcul 3 sortes de produits du style terroir et tout à la fin j'additionne ces 3 catégorie avec la fonction (avec un bouton calcul) :
function calcul_total(){
var port = 15;
total = (Math.round(dernierPrixterroir*100))/100 + (Math.round(dernierPrixvolaille*100))/100 + (Math.round(dernierPrixpoisson*100))/100;
document.getElementById("total_achat").value =(Math.round(total*100))/100;
if (total>300){
port = 0;
document.getElementById("port").value = port;
document.getElementById("tot_ttc").value =(Math.round((total+port)*100))/100;
}else{
port = 15;
document.getElementById("port").value = port;
document.getElementById("tot_ttc").value =(Math.round((total+port)*100))/100;
}
}
Et en mettant la variable à l'intérieur des fonctions précédentes mon total affiche 0, il n'additionne plus les 3 catégories ?
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 8 oct. 2008 à 17:06
J'ai une idée....
En fait il faut que tu fasses 3 méthodes de calcul des prix
function calcul_prix_terroir(){
var dernierPrixterroir = 0;
for(i=1;i<8;i++){
var nombreterroir=document.getElementById("nombreterroir"+i).value;
var prixterroir=document.getElementById("prixterroir"+i).value;
var prixTotalterroir=nombreterroir * (Math.round(prixterroir*100))/100;
document.getElementById("prix_totalterroir"+i).value=prixTotalterroir;
dernierPrixterroir +=prixTotalterroir;
}
document.getElementById("finterroir").value = dernierPrixterroir;
return dernierPrixterroir;
}
et ensuite dans ta fonction de calcul :
function calcul_total(){
var total =
(Math.round(calcul_prix_terroir()*100))/100 +
(Math.round(calcul_prix_volaille()*100))/100 +
(Math.round(calcul_prix_poisson()*100))/100;
document.getElementById("total_achat").value =(Math.round(total*100))/100;
var port = (total>300) ? 0 : 15;
document.getElementById("port").value = port;
document.getElementById("tot_ttc").value =(Math.round((total+port)*100))/100;
}
sakura151
Messages postés10Date d'inscriptionlundi 24 octobre 2005StatutMembreDernière intervention14 mars 2009 8 oct. 2008 à 17:19
C'est magique, ça fonctionne !!!
Merci beaucoup !!
Petit complément d'info ? Suis vraiment débutante alors si je comprends bien c'est le return qui valide la dernière entrée ?
Zobibol
Messages postés469Date d'inscriptionmercredi 9 janvier 2002StatutMembreDernière intervention20 février 20176 8 oct. 2008 à 17:33
en fait le return te (attention la haute précision de l'explication ;o)) retourne la valeur du calcul (pas de commentaire).
Je ne comprends pas trop ce que tu entends par :c'est le return qui valide la dernière entrée ?
On va mettre ça sur le compte de la fatigue.