javascript Fonction pour calculer la surface d'un cercle

Rockets__

Membre
Hello,

J'ai créé/adapté une petite fonction assez simple pour calculer la surface d'un cercle, avec la fameuse formule Pi*(R*R).
Voici le code
JavaScript
function surfaceCercle() {
    var rayon=parseFloat(prompt("Entrez le rayon du cercle : "));
    return Math.PI*rayon*rayon;
}
Et le code HTML
HTML
<h1>Écriture d'une fonction complexe</h1>
<p>
    Cliquez sur le bouton pour lancer la fonction&nbsp;:
    <button onclick="alert('Surface du cercle  : '+surfaceCercle())">
        Lancer la fonction
    </button>
</p>

Une chose que je n'arrive pas à effectuer c'est d'annuler le déroulement de la fonction si une valeur de rayon n'est pas renseigné dans la première fenêtre prompt et qu'on clique sur Annuler.
La fenêtre alert se lance quand même avec le message Surface du cercle : NaN

Thanks !
 

mikadox

Membre
Je m'y suis essayé mais ça ne fonctionne pas du tout, la fonction ne se lance même pas !
JavaScript
function surfaceCercle() {
var rayon=parseFloat(prompt("Entrez le rayon du cercle : "));
    if rayon !== 0 {
        return Math.PI*rayon*rayon;
    }
    else {
        break;
    }   
}
 

Nicolas

Membre
Salut mikadox tu ne peux pas utiliser un break; ici car c'est pour sortir d'une boucle (for, while, etc...).

En plus je ne crois pas que le conseil de DaCode soit pertinent car il faut simplement trouver une porte de sortie quand on clique sur Annuler, pas quand on ne renseigne pas de valeur. D'ailleurs il faudrait que ça fonctionne même si on rentre une valeur mais qu'on clique sur Annuler.

Comment définir une action quand on clique sur Annuler dans la fenêtre prompt ?
 

c-cadeau

Membre
Il faudra obligatoirement un if/else pour établir une condition: si la valeur entrée est différente de null alors ... sinon ...
Hmmm... oui j'ai dit une bêtise.
Pas certain parce que ce que propose Naruto_Z c'est un if/else si la valeur est différente de null dans le champ de la fenêtre prompt mais là si je comprends bien c'est de trouver une sortie lorsque l'on clique sur Annuler dans la fenêtre prompt donc c'est différent.
 

Jack

Membre
Mort de rire...

Bon en regardant un peu la concurrence...
Il faut une seconde fonction pour gérer le clic sur Annuler
JavaScript
function surfaceCercle(){
    var rayon=parseFloat(prompt("Entrez le rayon du cercle : "));
    return Math.PI*rayon*rayon;
}

function CancelPrompt() {
    var surface = surfaceCercle();
          if( !isNaN(surface )) {
          alert('Surface du cercle  : '+ surface);
          }
}
 

Eleven Up

Membre
Donc là pas besoin de else, si la surface n'est pas NaN on affiche le résultat sinon la fonction s'arrête sans même le préciser ?
Et pourquoi cette syntaxe
JavaScript
if( !isNaN(surface ))
Et pas un truc du genre
JavaScript
if (surface != NaN) {
    bla bla bla...
}
 

Rockets__

Membre
Donc on peut simplifier ainsi
Merci L'occitan pour cette solution, et merci aussi à Jack qui nous a mis sur la voie.
Je n'aurais pas réussi de cette façon, j'étais parti sur un truc comme mikadox et ça ne fonctionnait pas.

Du coup ça m'aura permis de découvrir la fonction isNaN qui va m'être bien utile dans mes futurs exercices.

7UP je suppose que ça doit pouvoir s'écrire aussi comme tu le proposes
JavaScript
if (surface != NaN) {
    bla bla bla...
}
je vais tenter le coup
 

Ces discussions pourraient vous intéresser...

Bonjour à tous, J'essaie de déployer une application sur mon serveur live via Docker mais j'ai du faire une mauvaise configuration car l'application s'est installé en local. Il y a un fichier à configurer : docker-compose.yml notamment cette section server: image...
Bonsoir, j'ai fait une recherche sur le forum et je crois que personne n'en a encore parlé, j'ai trouvé un site pas mal lorsque j'ai installé easyPHP (qui est maintenant Webserver) : KodeShot. Cela permet de créer des captures d'écrans d'extrait de code. Vous tapez votre code, vous...
Hello, J'ai créé un formulaire avec Bootstrap mais j'ai un problème de mise en forme. Les <input> prennent chacun leur propre ligne alors que j'aimerais que certains soit côte à côte. Je ne parviens pas du tout à faire ce que je veux et je ne trouve rien dans la documentation...
Haut