Problème avec une racine carrée

Fermé
taco1 - Modifié par KX le 13/05/2016 à 21:34
 Jonor - 13 mai 2016 à 23:44
Bonjour,

J'ai un petit souci avec une racine carrée dans un calcul très simple:

Je veux pouvoir faire ce calcul : D = 1.25 * √(x) , " x " étant un nombre que je rentre moi-même par la suite dans une fenêtre de dialogue.

Problème : le résultat est "NaN".
Pourtant " x " n'est pas négatif ni égal à 0 puisque je le rentre directement.

C'est sûrement tout bête, mais je ne vois pas pourquoi ça ne marche pas [je débute dans la programmation, il y encore une semaine, pour moi, Java c'était le nom d'une île dans l'océan Indien... :)

Bref, merci d'avance.
Voilà l'extrait en question :

<!DOCTYPE html>
<html>
<body>

<b>La formule à appliquer : 1,25 * √(x)</b>
<br /><br />

<script type="text/javascript">
function calcul(){
                var x = Number(document.getElementById("x1").value);
                var dist = Number(1.25 * (Math.sqrt("x1")));
                document.getElementById("dist01").value = dist;
            }
</script>

<form name="fact" style="background-color:#A0522D; width:50%;">

  -> Rentrez ici la valeur de x:
<br />
<label>x =</label><input type="text" SIZE="1" name="input x1" id="x1" onblur="calcul()">
<br /><br />
        
  => On obtient la distance:
<br />
<label>dist =</label><input type="text" SIZE="10" STYLE="text-decoration:none;;color: #00BFFF;" name="distance" id="dist01">
<br /><br />

</form>

    <button onclick="calcul()">Cliquez pour afficher le résultat</button>

</body>
</html>

1 réponse

var x = Number(document.getElementById("x1").value);
var dist = Number(1.25 * (Math.sqrt("x1")));



tu essayes de faire la racine carré de la chaine "x1"
0
Ok, donc je dois d'abord lui définir la chaine "x1"? C'est là que je dois utiliser les "Strings"?
Je vais potasser encore un peu alors...

Merci pour l'aide en tout cas :)
0
Salut, en effet vous devez potasser encore ou alors c'est de l’inattention mais la console d'erreur(affichez là dans votre navigateur) aurais du vous mettre sur la voie:

/*
la ligne suivante crée la variable nommé x, elle contient la valeur de l'élément qui a pour ID(dans le HTML ne mélangeons pas les torhons et serviettes comme on dit ; )*/
var x = Number(document.getElementById("x1").value);

/*la ligne qui suit crée la variabele 'dist' qui fait le calcul en utilisant x1 entre guillemets*/
var dist = Number(1.25 * (Math.sqrt("x1")));

Nulle part x1 est définit et donc n'existe pas, dur de faire un clcul sans ses valeurs. En plus les guillemets que vous avez sur 'x1' indique que c'est la chaîne de caractères(du texte donc) et non une variable.
(évitez les lettres et abréviations, ça complique la lecture pour éviter de taper sur 3 touches de plus et surtout rend bien obscur même pour son créateur un code*/

Comme vous dites potasser encore un peu car c'est la base des bases l'utilisation des variables et la notation des valeurs, simpliste dans un langage comme javascript(non typé) mais qui pose intrinsèquement le problème du typage. Dans l'absolu javascript peut mélanger un nombre et du texte, mais forcément pour faire des opérations avec il aura du mal.

Voici une correction:

<script type="text/javascript">
function calcul(){
var parametre = Number(document.getElementById("x1").value);
var resultat = Number(1.25 * (Math.sqrt(parametre)));
document.getElementById("dist01").value = ;
}
</script>
Encore mieux en utilisant un paramètre à la fonction(c'est fait pour ça) puisque celle ci n'est d'aucune utilité si on ne lui fournit pas.

Une fonction:
function machin(){
...instructions
}
Une fonction(monParametre){
..instructions connaissent la variable monParametre
}


version optimisée ici:
http://jsbin.com/momosineki/edit?html,output
0
taco1 > Jonor
13 mai 2016 à 23:30
Merci pour votre réponse. Effectivement, je n'ai pas encore vu tout cela (je débute vraiment), je reviendrai dessus plus tard...
0
taco1 > taco1
13 mai 2016 à 23:43
ps : je viens de voir le lien, merci beaucoup, c'est beaucoup plus clair :)
0
ok tant que vous avez compris la différence entre x1 et "x1" et ne mélangez pas le HTML et Javascript ce n'est pas si mal ce qu vous avez fait :)
0