Mon bouton calcul ne fonctionne pas

Résolu/Fermé
titi 6247 Messages postés 30 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 12 mars 2011 - 11 mars 2011 à 11:10
titi 6247 Messages postés 30 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 12 mars 2011 - 12 mars 2011 à 21:16
Bonjour,

J'ai, (avec de l'aide) fait un petit bout de javascript pour effectuer un calcul.
J'ai ajouté un bouton, mais voilà, il ne fonctionne pas.
N'ayant pas de connaissance dans ce domaine, je me tourne donc vers vous afin de voir ce qui ne va pas.

Voici ce bout de code :
</style>
<script language="JavaScript" type="text/JavaScript">
// la fonction dont l'argument f deviendra l'objet formulaire (voir l'appel plus bas) function calculPrix(f){
var E,S,P,Q;
E=f.surface.value;
// Remplacer l'éventuelle virgule par un point
S=E.replace(/,/,'.');alert(S)
if (S<120) P=1500;
else if (S<170) P=1500+(S-120)*8.6;
else if (S<300) P=1500+(S-170)*9.6;
else if (S<500) P=1500+(S-300)*10.37;
else {alert('Surface trop grande. Formule indéfinie');return}
P=Math.round(P*100)/100;
// Remplacer le point par une virgule
Q=P.toString().replace(/\./,',');
f.montant.value=Q;
}// fin de la fonction
</script>
</head>


Puis, plus bas, à l'endroit où est placé le bouton :
<form name="form1" method="post" action="">
<div align="center"><big><font
color="#333333">Surface en m² </font> <input
name="surface" size="7" maxlength="7" type="text">
<input value="Calcul" onclick="calculPrix()"
type="button"><fontcolor ="#333333"><input
name="montant" size="9" maxlength="9" type="text">€TTC</fontcolor></big></div>
</form>

Voilà, si quelqu'un pouvait m'élucider ce problème, cela me rendrait un grand service.

D'avance merci à vous,
Alain.



A voir également:

6 réponses

salut,

il manque le parametre quand tu appelle ta fonction.
essaye avec ca :
onclick="calculPrix(this.form)"

a+
0
titi 6247 Messages postés 30 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 12 mars 2011
11 mars 2011 à 17:29
Bonjour à vous,

Je viens d'essayer, et, cela ne fonctionne toujours pas :

<form name="form1" method="post" action="">
<div align="center"><big><font
color="#333333">Surface en m² </font> <input
name="surface" size="7" maxlength="7" type="text">
<input value="Calcul"onclick="calculPrix(this.form) /"
type="button"><fontcolor="#333333"><input name="montant" size="9"
maxlength="9" type="text">€TTC</fontcolor></big></div>
</form>

Auriez vous une autre idée s'il vous plait.
Cordialement,
Alain
0
effectivement, ca ne peut pas marcher
<input value="Calcul"onclick="calculPrix(this.form) /" type="button">

il ne faut pas de slash dans le onclick. Il faut ecrire
<input value="Calcul" onclick="calculPrix(this.form)" type="button">
0
missokhay Messages postés 18 Date d'inscription mardi 2 juin 2009 Statut Membre Dernière intervention 12 mars 2015 8
Modifié par missokhay le 12/03/2011 à 09:03
Le problème est au niveau de la fonction elle-même: la variable f (qui renvoit au formulaire) n'est pas définie. Il suffit juste d' ajouter cette ligne au début : f=document.form1;
Le code devient :
<script language="JavaScript" type="text/JavaScript">
// la fonction dont l'argument f deviendra l'objet formulaire (voir l'appel plus bas)
function calculPrix(f){
f=document.form1;
var E,S,P,Q;
E=f.surface.value;
// Remplacer l'éventuelle virgule par un point
S=E.replace(/,/,'.');alert(S)
if (S<120) P=1500;
else if (S<170) P=1500+(S-120)*8.6;
else if (S<300) P=1500+(S-170)*9.6;
else if (S<500) P=1500+(S-300)*10.37;
else {alert('Surface trop grande. Formule indéfinie');return}
P=Math.round(P*100)/100;
// Remplacer le point par une virgule
Q=P.toString().replace(/\./,',');
f.montant.value=Q;
}// fin de la fonction
</script>
0
je ne vois pas l'interet de definir f dans la fonction. l'idée, si tu veux que cette fonction serve pour d'autre formulaire, c'est bien de recevoir le formulaire en parametre, et non pas de le definir en dur dans la fonction. C'est bien a ca que sert un parametre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
titi 6247 Messages postés 30 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 12 mars 2011
12 mars 2011 à 11:09
Bonjour à tous deux, et à tous,

merci pour vos réponses. J'ai donc suivi vos conseils, mais, cela ne fonctionne pas.

Comme je vous l'ai dit, je n'y connais rien dans ce domaine, je vous mets donc depuis le début au cas où le défaut viendrait de plus haut, et, je vous mets également un peu de ce qu'il y a au dessus de ce bouton (qui ne veut pas fonctionner)

Je vous remercie par avance,
Alain.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fr">
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<title>BIEC bis</title>
<script type="text/javascript">
// la fonction dont l'argument f deviendra l'objet formulaire (voir l'appel plus bas) function calculPrix(f){
f=document.form1; var E,S,P,Q;
E=f.surface.value;
// Remplacer l'éventuelle virgule par un point
S=E.replace(/,/,'.');alert(S)
if (S<120) P=1500;
else if (S<170) P=1500+(S-120)*8.6;
else if (S<300) P=1500+(S-170)*9.6;
else if (S<500) P=1500+(S-300)*10.37;
else {alert('Surface trop grande. Formule indéfinie');return}
P=Math.round(P*100)/100;
// Remplacer le point par une virgule
Q=P.toString().replace(/\./,',');
f.montant.value=Q;
}// fin de la fonction
</script>
<style type="text/css">
#cl1,#cl2,#cl3,#cl4 {
float:left;
width:25%;
height:500px;
}


et donc

<br>
</big>
<div style="text-align: left;"><big><small>De
    0 à 120m²   1500€<br>
De 121 à 170m²    8.60€ en plus par m²<br>
De 171 à 300m²    9.60€ en plus par m²<br>
De 301 à 500m²  10.37€ en plus par m²<br>
</small><br>
Au dela de 500m² voir en agence<br>
</big>
<form name="form1" method="post" action="">
<div align="center">
<p><big><big><small>S en m²
</small><input name="surface" size="7"
maxlength="7" type="text"><input value="Calcul"
onclick="calculPrix(this.form)" type="button"><input
name="montant" size="9" maxlength="9" type="text"><small>Prix
TTC en €</small>
</big></big></p>
</div>
</form>
</div>

J'espère que cela pourra vous faire voir d'où vient cette erreur. Merci encore.
0
dans ton code la ligne qui commence par // sert à faire un commentaire (non interpreté).

Si le mot "function" est sur cette ligne, il n'est donc pas interprété.

il faut que tu fasse un retour à la ligne avant "function" : tu dois avoir ca sur une seule ligne :
function calculPrix(f){
0
titi 6247 Messages postés 30 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 12 mars 2011
12 mars 2011 à 21:16
Bonsoir,

Un grand merci à vous deux, ça y est, ça fonctionne.
Avant de mettre en résolut, j'aimerai juste comprendre une chose, j'avais bien vu cette "function" qui revenait à chaque fois en bout du commentaire.
Je la remettais donc en place, mais vu quelle revenait là en bout, j'avais pensé que cela était normal.

Y a t il une raison à cela ? Cette fois ci, avant d'enregistrer le changement, j'ai simplement mis le curseur en bas de la page, et, youpi, cela fonctionne.

Bon, une autre chose si c'est permis, j'avais mis une "alert"(S), donc sur la surface rentrée. Cela ne me convient pas. Comme je ne me souviens plus de l'endroit où j'avais trouvé cette astuce, et, afin de ne pas faire de bétise, pour enlever cette "alert", je dois juste supprimer "alert(S) ou bien autre chose en plus. Je pense que oui, mais, je préfère demander.

A, comment mettre en résolut, je ne me souviens plus. (Je dois devenir trop vieux maintenant).

Mais, encore un grand merci.

Bonne soirée,
Alain.
0