2013-08-31 3 views
0

passé 45min en essayant la figure pourquoi il renvoie NaN, s'il vous plaît pointez-moi dans la bonne direction. Mon code est:parseInt renvoie NaN

<form name="calc"> 
    <input type="text" value="0" name="first" onchange="add()"> 
    <input type="text" value="0" name="second" onchange="add()"> 
    <input type="text" name="result" onchange="add()"> 
</form> 

<script type="text/javascript"> 
    var a = parseInt(document.calc.first.value); 
    var b = parseInt(document.calc.second.value); 
    var c = a + b; 
    function add(){ 
     document.calc.result.value = parseInt(c); 
    } 
</script> 

Répondre

3

Vous cherchez:

function add() { 
    var a = parseInt(document.calc.first.value, 10); 
    var b = parseInt(document.calc.second.value, 10); 

    var c = a + b; 

    document.calc.result.value = c; 
} 

Vous devez re-lire a et b valeurs à chaque fois qu'ils sont modifiés.

Remarque 1: N'oubliez pas non plus le paramètre radix dans parseInt(val, radix). C'est 10 dans votre cas (comme je suppose). Voir this MDN article sur pourquoi c'est important.

Note 2: pas besoin d'appeler parseInt(c), parce que c est déjà du type number.

2

a et b sont calculées fois au chargement de la page, lorsque le formulaire est vide, évidemment le résultat sera NaN.

Mettez toute la logique dans la fonction add, de sorte que vous récupérez l'état actuel du formulaire.

+0

maintenant je vois, il y a tellement plus à apprendre. Je vous remercie :) – MrPaulius