Convertisseur
Résolu
GanBoy_7575
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
GanBoy_7575 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
GanBoy_7575 Messages postés 8 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Convertisseur
- Convertisseur mp3 - Télécharger - Conversion & Extraction
- Convertisseur YouTube MP3 : toutes les solutions gratuites - Guide
- Convertisseur récupération de texte - Guide
- Code ascii convertisseur - Guide
- Convertisseur de monnaie - Télécharger - Banque & Budget
10 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, qu'as-tu essayé?
sans doute utile: https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
sans doute utile: https://www.commentcamarche.net/infos/25899-demander-de-l-aide-pour-vos-exercices-sur-ccm/
Bonjour à toi. J'ai essayé ça
Je débute dans le développement et je souhaite surtout pas qu'on me donne la solution mais juste m'expliqué, soit où je me trompe ou (et je pense que c'est le cas) me dire que ce code là n'est pas bon et que c'est une autre méthode qui doit être utilisé.
function calculResultats(e){ const convertisseur = document.getElementById('convertisseur'); const euro = document.getElementById('euro'); const convertDevise = parseFloat(convertisseur.value); const conversion = (convertDevise); const select = document.getElementById('liste'); const choice = select.value; document.getElementById('list').addEventListener('change',function (e) { if (choice === 0) { euro.value = (conversion * 0.88).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; } else if (choice === 1) { euro.value = (conversion * 1.11).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; } else if (choice === 2) { euro.value = (conversion * 0.01).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; } else{ alert ('Merci de vérifier votre saisie'); }});}
Je débute dans le développement et je souhaite surtout pas qu'on me donne la solution mais juste m'expliqué, soit où je me trompe ou (et je pense que c'est le cas) me dire que ce code là n'est pas bon et que c'est une autre méthode qui doit être utilisé.
Bonjour,
Tu ne nous as pas donné le code complet ... ou alors il manque du html.
Il faudrait aussi faire correctement l'indentation du code.
Ensuite,
Tu ne dois pas mettre le addeventlistener dans la fonction calculResultats
mais au contraire, faire appel à cette fonction depuis le addeventlistener
Le terme const permet de déclarer des CONSTANTES.
Donc, l'utiliser pour des variables "changeantes" n'est pas bon. A la place, tu dois utiliser le mot clé : VAR ou LET
Tu n'as pas besoin de faire
vu que le addeventlistener cible déjà ta liste.
Donc le choix s'écrit (dans le addeventlistener )
Ton code corrigé devrait ressembler à un truc du genre
Tu ne nous as pas donné le code complet ... ou alors il manque du html.
Il faudrait aussi faire correctement l'indentation du code.
Ensuite,
Tu ne dois pas mettre le addeventlistener dans la fonction calculResultats
mais au contraire, faire appel à cette fonction depuis le addeventlistener
Le terme const permet de déclarer des CONSTANTES.
Donc, l'utiliser pour des variables "changeantes" n'est pas bon. A la place, tu dois utiliser le mot clé : VAR ou LET
Tu n'as pas besoin de faire
const select = document.getElementById('liste'); const choice = select.value;
vu que le addeventlistener cible déjà ta liste.
Donc le choix s'écrit (dans le addeventlistener )
document.getElementById('list').addEventListener('change',function (e) { var choice = this.value; alert('Choix = ' + choice); });
Ton code corrigé devrait ressembler à un truc du genre
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="utf-8"/> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>TTTTT</title> </head> <body> <h2 class="pb-3 heading">Convertisseur</h2> <form id="formulaire"> <div class="form-group"> <div class="input-group"> <input type="number" id="convertisseur" class="form-control"> <select class="custom-select col-3" id="liste"> <option value="0">$</option> <option value="1">£</option> <option value="2">¥</option> </select> </div> </div> <div class="form-group"> <input type="submit" value="Convertir" class="btn btn-info btn-block"> </div> </form> <div id="resultats" style="display:none"> <input type="number" id="euro" value="0"> </div> <div id="chargement" style="display:none"> ... </div> <script language="JavaScript"> function calculResultats(choice){ var convertisseur = document.getElementById('convertisseur'); var euro = document.getElementById('euro'); var convertDevise = parseFloat(convertisseur.value); if (choice == 0) { euro.value = (convertDevise * 0.88).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; } else if (choice == 1) { euro.value = (convertDevise * 1.11).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; } else if (choice == 2) { euro.value = (convertDevise * 0.01).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; }else{ alert ('Merci de vérifier votre saisie'); } } document.getElementById('liste').addEventListener('change',function (e) { var choix = this.value; console.log("choix",choix); calculResultats(choix); // appel de la fonction }); </script> </body> </html>
Oui je n'ai effectivement pas tout mis afin que ce soit ciblé sur le problème et faire en sorte qu ce soit le plus clair possible.
Du coup si je comprend ta correction, d'une part c'est de ne pas utiliser de constantes mais des variables var ou let, et en suite de simplifier ma fonction avec le this value? cela renvoie automatiquement sur la fonction qui l'a précède? C'est les seules choses qui sont incorrects?
Du coup si je comprend ta correction, d'une part c'est de ne pas utiliser de constantes mais des variables var ou let, et en suite de simplifier ma fonction avec le this value? cela renvoie automatiquement sur la fonction qui l'a précède? C'est les seules choses qui sont incorrects?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui effectivement, je suis passé à côté de ça comme un boulet.
Ton code marche nickel mais serait-il possible de faire qu'ils convertisse en appuyant sur le bouton convertir et non dés qu'on change la devise? J'ai créé une petite animation de chargement et je souhaite lui donné le temps de s'effectué, juste en passant par le bouton. J'y suis arrivé quand il n'y avait qu'une seule option mais avec l'input select je n'y arrive pas.
Ton code marche nickel mais serait-il possible de faire qu'ils convertisse en appuyant sur le bouton convertir et non dés qu'on change la devise? J'ai créé une petite animation de chargement et je souhaite lui donné le temps de s'effectué, juste en passant par le bouton. J'y suis arrivé quand il n'y avait qu'une seule option mais avec l'input select je n'y arrive pas.
L'input select. En essayant la facilité j'ai changé le getElement qui visait la liste par le bouton mais en faisant ça la console me met que ce n'est pas une fonction. Je sais que je débute mais j'ai l'impression d'être idiot pour le coup de pas voir où ça coince...
Voici mon code html
mon code js
Merci pour ton aide.
<h2 class="pb-3 heading">Convertisseur</h2> <form id="formulaire"> <div class="form-group"> <div class="input-group"> <input type="number" id="convertisseur" class="form-control"> <select class="custom-select col-3" id="liste"> <option value="0">$</option> <option value="1">£</option> <option value="2">¥</option> </select> </div> </div> <div class="form-group"> <input type="submit" id="button" value="Convertir" class="btn btn-info btn-block"> </div> </form> <!-- Image pour le chargement --> <div id="chargement"> <img src="(image en gif)" alt=""> </div> <div id="resultats"> <h5 class="pt-4">Résultats</h5> <div class="form-group"> <div class="input-group"> <input type="number" id="euro" class="form-control"> <span class="input-group-text">€</span> </div> </div> </div>
mon code js
document.getElementById('formulaire').addEventListener('submit',function(e){ document.getElementById('resultats').style.display = 'none'; document.getElementById('chargement').style.display = 'block'; setTimeout(calculResultats,2000); e.preventDefault(); }); function calculResultats(choice){ var convertisseur = document.getElementById('convertisseur'); var euro = document.getElementById('euro'); var convertDevise = parseFloat(convertisseur.value); if (choice == 0) { euro.value = (convertDevise * 0.88).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; } else if (choice == 1) { euro.value = (convertDevise * 1.11).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; } else if (choice == 2) { euro.value = (convertDevise * 0.01).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; }else{ showError ('Merci de vérifier votre saisie'); } } document.getElementById('button').addEventListener('change',function (e) { var choix = this.value; calculResultats(choix); }); function showError(error){ document.getElementById('resultats').style.display = 'none'; document.getElementById('chargement').style.display = 'none'; const errorDiv = document.createElement('div'); const card = document.querySelector('.card') const heading = document.querySelector('.heading'); errorDiv.className = 'alert alert-danger'; errorDiv.appendChild(document.createTextNode(error)); card.insertBefore(errorDiv,heading); setTimeout(clearError,3000); } function clearError(error){ document.querySelector('.alert').remove(); }
Merci pour ton aide.
document.getElementById('formulaire').addEventListener('submit',function(e){ document.getElementById('resultats').style.display = 'none'; document.getElementById('chargement').style.display = 'block'; setTimeout(calculResultats,2000); e.preventDefault(); }); function calculResultats(){ var convertisseur = document.getElementById('convertisseur'); var euro = document.getElementById('euro'); var convertDevise = parseFloat(convertisseur.value); var choice = document.getElementById('liste').value; console.log(choice); if (choice == 0) { euro.value = (convertDevise * 0.88).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; } else if (choice == 1) { euro.value = (convertDevise * 1.11).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; } else if (choice == 2) { euro.value = (convertDevise * 0.01).toFixed(2); document.getElementById('resultats').style.display = 'block'; document.getElementById('chargement').style.display = 'none'; }else{ showError ('Merci de vérifier votre saisie'); } }