Conversion chaine de caractère + contrôle de saisie
Bonjour, je viens demander de l'aide car je ne sais pas comment m'en sortir.
Je débute en codage javascript. Je dois faire un convertisseur binaire > décimale avec contrôle de saisie
Je sais qu'il existe des fonctions déjà toutes faites mais ce n'est pas le but de cet exercice, car je dois aussi écrire un pseudo code que je comprends.
J'ai fait ceci pour avoir mon convertisseur :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <script>
var valbin = prompt("Entrez une valeur ");
var i = 0 ;
var tab=[];
var valeur = 0 ;
var resultat = 0 ;
while (valbin.charAt(i) != "")
{
tab[i] = valbin.charAt(i) ;
i++;
}
tab.reverse();
var i=0;
while (tab[i] == 1 || tab[i] == 0)
{
if ((tab[i]) == 1)
{
resultat += Math.pow(2,i);
}
i++;
}
document.write(resultat) ;
</script> |
Jusqu'ici ça marche bien, je saisi la valeur dans la pop-up et j'ai mon résultat qui est ok.
Là ou ça se complique c'est que j'ai voulu en faire une fonction, avec des champs comme les formulaires pour que l'utilisateur tape sa valeur binaire.
Et j'ai tenté de mettre en place un contrôle grace a regexp et ça ne fonctionne pas du tout.
Je vous montre ce que j'ai fait :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| <script>
function Bintodec_onClick()
{
var valbin = document.getElementById( "valbin" ) ;
var i = 0 ;
var tab=[];
var valeur = 0 ;
var resultat = 0 ;
var chiffres = new RegExp("[^0-1]");
if (chiffres.test(valbin))
{
alert("Vous n'avez pas saisi un nombre!");
}
else
{
while (valbin.charAt(i) != "")
{
tab[i] = valbin.charAt(i) ;
i++;
}
tab.reverse();
var i=0;
while (tab[i] == 1 || tab[i] == 0)
{
if ((tab[i]) == 1)
{
resultat += Math.pow(2,i);
}
i++;
}
result.value = resultat ;
}
}
</script>
<label>Valeur binaire</label>
<input id="valbin" />
<br>
<label>Convertis en décimale : </label>
<input id="result" />
<br>
<button onclick="Bintodec_onClick() ;">Convertir en décimale !</button> |
A ce moment j'ai dans tous les cas mon Alert qui s'affiche.
J'ai tenté de passer par une autre variable en faisant ajoutant
Code:
var binaire = valbin.value ;
et en modifiant mon alert de cette façon :
Code:
1 2 3 4
| if (chiffres.test(binaire))
{
alert("Vous n'avez pas saisi un nombre!");
} |
La le contrôle s'éffectue bien mais j'ai un message d'érreur dont je n'arrive pas a me débarasser
Citation:
object #<HTMLInputElement> has no method 'charAt'
Sans passer par des choses trop compliqué ou des fonctions déjà toute prête pouvez vous m'aider corriger ce script?
Merci par avance