IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Conversion chaine de caractère + contrôle de saisie


Sujet :

JavaScript

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    	var binaire = valbin.value ;
    et en modifiant mon alert de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    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

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    La méthode charAt s'applique à une chaine de caractères, or ta variable valBin correspond à un objet de type HTMLElement qui, comme le message l'indique, n'est pas une chaine et ne possède pas de méthode charAt()...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Oui, j'avais compris ce message, j'utilisais le charAt pour pouvoir "decouper" ce que l'utilisateur avait entré, ce qui permettait d'avoir un caractère par case dans mon tableau et de m'en servir pour les puissances de 2.

    Y'a t-il un moyen de "decouper" chaque chiffre saisie par l'utilisateur sans utiliser charAt ?

    Que puis-je utiliser pour régler mon soucis?

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Est-ce qu'il est possible de passer par autre chose que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById
    pour récupérer la saisie de l'utilisateur et donc n'avoir que des char?

    Dans le cas contraire, comment puis-je séparer chaque chiffre d'un nombre saisie comme je ne peux pas avoir recours au charAt?

  5. #5
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonsoir,
    utilisation de la méthode split().
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var txt = "Bonjour";
    alert( txt.split(''));

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    J'ai essayer le .split avant de passer mais j'ai la même chose qu'avec le charAt


    object #<HTMLInputElement> has no method 'split'

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Citation Envoyé par Bovino
    La méthode charAt s'applique à une chaine de caractères, or ta variable valBin correspond à un objet de type HTMLElement qui, comme le message l'indique, n'est pas une chaine et ne possède pas de méthode charAt()...
    il te faut récupérer la value de l'INPUT.

  8. #8
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Pourriez vous m'expliquez comment car je ne sais pas du tout comment faire

  9. #9
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Tu te moques de nous ou quoi ?

    Citation Envoyé par Kalika07
    J'ai tenté de passer par une autre variable en faisant ajoutant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	var binaire = valbin.value ;
    Tu le fais deux lignes plus haut mais tu n'arrives plus à le faire à cet endroit ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Désolé, j'ai passé un bon moment dessus sans que ça fonctionne et j'admet qu'a 4h je n'avais pas les idées claires.

    Grace a votre aide ça fonctionne parfaitement

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion chaine de caractère
    Par guefrachi dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 24/01/2010, 02h13
  2. Conversion chaine de caractères en nombre décimal
    Par lodan dans le forum Langage
    Réponses: 3
    Dernier message: 02/04/2009, 19h11
  3. Conversion chaine de caractère => entier (ordre des caractères primordial car ADN)
    Par ctobini dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 24/09/2007, 11h20
  4. Conversion chaine de caractères en numérique
    Par arezki76 dans le forum Shell et commandes GNU
    Réponses: 33
    Dernier message: 18/07/2007, 11h25
  5. conversion chaine de caractères --> HTML
    Par captainflex dans le forum Ruby on Rails
    Réponses: 9
    Dernier message: 17/06/2007, 21h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo