Variable Javascript

Fermé
Ephemeris - 28 nov. 2007 à 11:39
 pascal - 4 mars 2008 à 10:24
Bonjour, je solicite votre aide afin de resoudre un problème de variable.
Dans ma fonction Javascript, lorsque je recupere les variables Paref et Scref, j'obtiens des ressultats abérents, tandis que lorsque je les définis en valeur fixe, le resultat obtenu est plutot cohérent (j'ai vérifié maint fois les différentes syntaxes a l'interieur de mon formulaire, et il semble qu'elles soient correctes).

Voici mon script:
function cal() {
var Pact=document.form1.Paref.value;
var Scact=document.form1.Scref.value;
var For=document.form1.Force2.value-document.form1.Force1.value;
var Touc=document.form1.Touch2.value-document.form1.Touch1.value;
var Ag=document.form1.Agi2.value-document.form1.Agi1.value;
var End=document.form1.Endu2.value-document.form1.Endu1.value;
var Pui=document.form1.Pa2.value-document.form1.Pa1.value;
var Sco=document.form1.Sc2.value-document.form1.Sc1.value;
var Pafo=For*2.23
var Paagi=Ag*1.13
var Papa=Pui*1.1
var Puifin=Pafo+Paagi+Papa
var Pourcrit=((Ag*1.03)/24)+(Sco/22)
var Viefin= End*10.03
var DPScat=(((Pact/14)+((Pact/14)*(Scact/100))+67)*1.1)
var Vardps=((((((Pact+Puifin)/14)+(((Pact+Puifin)/14)*((Scact+Pourcrit)/100))+67)*1.1))-DPScat)+(DPScat*((Touc/15750)))
document.form1.Touch.value=Touc
document.form1.Force.value=For
document.form1.Agi.value=Ag
document.form1.Endu.value=End
document.form1.Pa.value=Pui
document.form1.Sc.value=Sco
document.form1.Pafin.value=Puifin
document.form1.Critfin.value=Pourcrit
document.form1.Pvfin.value=Viefin
document.form1.DPS.value=Vardps
}


En vous remerciant par avance :]

6 réponses

Quand tu fais un alert sur ce que tu récupère ça donne quoi ?

Sinon essaies document.forms['form1'].getElementById('Paref').value
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
28 nov. 2007 à 12:22
Bonjour,

Bonne remarque de doctormad, un Alert() devrait te permettre de localiser le problème.
Sinon, peux-tu nous donner le code de ton formulaire ? Ca nous aiderait un peu :)

> Sinon essaies document.forms['form1'].getElementById('Paref').value
Là tu mélanges un peu il me semble :)
Parce que "Paref" serait un "name" plutôt qu'un "id", et parce que getElementById s'applique à document plutôt qu'à form :)
0
Dans un premier, merci de me repondre :)

Ensuite, lorsque j'attribue la valeur 3800 a Paref, via mon formulaire et que je fais une alert me demandant de me retourner la valeur Pact (qui est celle saisie dans Paref) , j'obtiens bien la bonne valeur (soit 3800) mais le resultat de Vardps est complètement erroné (et complètement différent de ce que j'obtiens lorsque je défini directement la variable avec
var Pact=3800
).
0
Voici le code de mon formulaire (qui est un peu la page entiere ^^), j'espere ne pas trop flooder avec:

<html>
<head>
<link rel="stylesheet" type="text/css" href="style_div.css">
</head>
<body text="#FFFFFF" background="ss497.jpg">
<script type="text/javascript">
function cal() {
var Pact=document.form1.Paref.value;
var Scact=document.form1.Scref.value;
var For=document.form1.Force2.value-document.form1.Force1.value;
var Touc=document.form1.Touch2.value-document.form1.Touch1.value;
var Ag=document.form1.Agi2.value-document.form1.Agi1.value;
var End=document.form1.Endu2.value-document.form1.Endu1.value;
var Pui=document.form1.Pa2.value-document.form1.Pa1.value;
var Sco=document.form1.Sc2.value-document.form1.Sc1.value;
var Pafo=For*2.23
var Paagi=Ag*1.13
var Papa=Pui*1.1
var Puifin=Pafo+Paagi+Papa
var Pourcrit=((Ag*1.03)/24)+(Sco/22)
var Viefin= End*10.03
var DPScat=(((Pact/14)+((Pact/14)*(Scact/100))+67)*1.1)
var Vardps=((((((Pact+Puifin)/14)+(((Pact+Puifin)/14)*((Scact+Pourcrit)/100))+67)*1.1))-DPScat)+(DPScat*((Touc/1575)))
document.form1.Touch.value=Touc
document.form1.Force.value=For
document.form1.Agi.value=Ag
document.form1.Endu.value=End
document.form1.Pa.value=Pui
document.form1.Sc.value=Sco
document.form1.Pafin.value=Puifin
document.form1.Critfin.value=Pourcrit
document.form1.Pvfin.value=Viefin
document.form1.DPS.value=Vardps
}
</script>
<form name="form1">
<div id="bandeau"></div>
<div id=Cat align="center">
<table>
	<tr><td><p>Pa actuelle:</p></td><td><Input type=text name=Paref></input></td></tr>
	<tr><td><p>Crit actuel:</p></td><td><Input type=text name=Scref></input></td></tr>
</table>
<br><br>
<table border="2" align="center">
	<tr>
		<td>
		</td>
		<td>
		<p>Item actuel</p>
		</td>
		<td>
		<p>Nouvel item</p>
		</td>
		<td>
		<p>Différence</p>
		</td>
	</tr>
	<tr>
		<td>
		<p>Force</p>
		</td>
		<td>
		<Input type=text name=Force1></input>
		</td>
		<td>
		<Input type=text name=Force2></input>
		</td>
		<td>
		<Input type=text name=Force READONLY></input>
		</td>
	</tr>
	<tr>
		<td>
		<p>Agilité</p>
		</td>
		<td>
		<Input type=text name=Agi1></input>
		</td>
		<td>
		<Input type=text name=Agi2></input>
		</td>
		<td>
		<Input type=text name=Agi READONLY></input>
		</td>
	</tr>
	<tr>
		<td>
		<p>Endurance</p>
		</td>
		<td>
		<Input type=text name=Endu1></input>
		</td>
		<td>
		<Input type=text name=Endu2></input>
		</td>
		<td>
		<Input type=text name=Endu READONLY></input>
		</td>
	</tr>
	<tr>
		<td>
		<p>Puissance</p>
		</td>
		<td>
		<Input type=text name=Pa1></input>
		</td>
		<td>
		<Input type=text name=Pa2></input>
		</td>
		<td>
		<Input type=text name=Pa READONLY></input>
		</td>
	</tr>
	<tr>
		<td>
		<p>S. Critique</p>
		</td>
		<td>
		<Input type=text name=Sc1></input>
		</td>
		<td>
		<Input type=text name=Sc2></input>
		</td>
		<td>
		<Input type=text name=Sc READONLY></input>
		</td>
	</tr>
		<tr>
		<td>
		<p>S. Toucher</p>
		</td>
		<td>
		<Input type=text name=Touch1></input>
		</td>
		<td>
		<Input type=text name=Touch2></input>
		</td>
		<td>
		<Input type=text name=Touch READONLY></input>
		</td>
	</tr>
	<tr>
		<td>
		</td>
		<td>
		</td>
		<td>
		</td>
		<td>
		<input type=Button value=Calculer onClick=cal()>
		</td>
	</tr>
</table><br><br>
<table border="2">
	<tr width="400px">
		<td>Puissance d'attaque</td><td>Pourcentage critique</td><td>Points de vie</td><td>DPS</td>
	</tr>	
	<tr>	
		<td><input type=text name=Pafin READONLY></td><td><input type=text name=Critfin READONLY></td><td><input type=text name=Pvfin READONLY></td><td><input type=text name=DPS></td>
	</tr>
</table>
</div>
<div id="piedpage"></div>
</body>
</form>
</html>
0

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

Posez votre question
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
28 nov. 2007 à 14:23
Bon, je ne vois rien d'a priori rédhibitoire.

Ceci dit, il y a quand même quelques soucis :

-> Dans les partie JavaScript, mets bien des ; à la fin de toutes les lignes.
-> En javascript, évite d'appeler des variables avec des mots réservés : For devrait être renommé
-> En Html, mets des guillemets autour de toutes les valeurs d'attributs : <input type=Button value=Calculer doit être remplacé par <input type="Button" value="Calculer". De même pour TOUS les champs.

Dernier point, si tu utilises Firefox, tu as une description des erreurs JavaScript beaucoup plus fournie qu'avec IE (Outils -> Console d'Erreurs), qui permet bien souvent de localiser des erreurs de script.
0
salut,
ta variable est en text et tu vieux t'en servir en nombre... essaye ça :

var Pact=eval(document.form1.Paref.value);
var Scact=eval(document.form1.Scref.value);

bonne journée...
0