par
Berzemus » 17 déc. 2008, 12:51
Ah, je vois que tu agis sur des champs input.. je ne pense pas que tu puisses déterminer la valeur d'un champ input avec innerHTML.. si ça marche, c'est bizarre (mais pas impossible). J'essayerais plutôt de définir tout de suite la valeur avec value, au lieu de innerHTML (dans tes deux fonctions "calcul").
Pour ce qui est de ta fonction:
Code : Tout sélectionner
function total(result,result2)
{
var result=document.getElementById('result').value;
var result2=document.getElementById('result2').value;
if(!parseFloat(result)) {
result = 0; }
if(!parseFloat(result2)) {
result2 = 0; }
document.getElementById('total1').innerHTML = parseFloat(result) + parseFloat(result2) ;
}
On n'y est pas encore.. pourquoi prendre en paramètre des variable alors que tu les réassigne dés le début ? Soit tu ne mets pas les variables en paramètre, soit tu ne changes pas leur valeur en début de fonction.
Imaginons que tu ne veux pas les passer en paramètre.
Code : Tout sélectionner
function total()
{
var result=document.getElementById('result').value;
var result2=document.getElementById('result2').value;
(...)
Ces valeurs sont des entiers, pas des valeurs flottantes comma avant.
Il vaut donc mieux utiliser parseInt, et on va le faire dés le début:
Code : Tout sélectionner
function total()
{
var result=parseInt(document.getElementById('result').value);
var result2=parseInt(document.getElementById('result2').value);
(...)
Suite à ça, pour vérifier qu'il s'agit bien de nombres, on peut utiliser la fonction isNaN() :
Code : Tout sélectionner
(...)
if (!isNaN(result)) {
result = 0
}
if (!isNaN(result2) {
result2 = 0
}
(...)
Et par la suite on est sur qu'il s'agit d'entiers, donc il devient inutile d'utiliser parseFloat() ou parseInt(), leur addition donnera automatiquement la valeur attendue (la somme quoi).
Tu peux jouer avec des alert() sur le résultat, pour voir si ça va bien, et localiser l'erreur.
Ah, je vois que tu agis sur des champs input.. je ne pense pas que tu puisses déterminer la valeur d'un champ input avec innerHTML.. si ça marche, c'est bizarre (mais pas impossible). J'essayerais plutôt de définir tout de suite la valeur avec value, au lieu de innerHTML (dans tes deux fonctions "calcul").
Pour ce qui est de ta fonction:
[code]function total(result,result2)
{
var result=document.getElementById('result').value;
var result2=document.getElementById('result2').value;
if(!parseFloat(result)) {
result = 0; }
if(!parseFloat(result2)) {
result2 = 0; }
document.getElementById('total1').innerHTML = parseFloat(result) + parseFloat(result2) ;
} [/code]
On n'y est pas encore.. pourquoi prendre en paramètre des variable alors que tu les réassigne dés le début ? Soit tu ne mets pas les variables en paramètre, soit tu ne changes pas leur valeur en début de fonction.
Imaginons que tu ne veux pas les passer en paramètre.
[code]function total()
{
var result=document.getElementById('result').value;
var result2=document.getElementById('result2').value;
(...)[/code]
Ces valeurs sont des entiers, pas des valeurs flottantes comma avant.
Il vaut donc mieux utiliser parseInt, et on va le faire dés le début:
[code]function total()
{
var result=parseInt(document.getElementById('result').value);
var result2=parseInt(document.getElementById('result2').value);
(...)[/code]
Suite à ça, pour vérifier qu'il s'agit bien de nombres, on peut utiliser la fonction isNaN() :
[code](...)
if (!isNaN(result)) {
result = 0
}
if (!isNaN(result2) {
result2 = 0
}
(...)[/code]
Et par la suite on est sur qu'il s'agit d'entiers, donc il devient inutile d'utiliser parseFloat() ou parseInt(), leur addition donnera automatiquement la valeur attendue (la somme quoi).
Tu peux jouer avec des alert() sur le résultat, pour voir si ça va bien, et localiser l'erreur.