4 votes

sinon si javascript

J'ai une fonction simple qui est censée demander à l'utilisateur le nom de l'entreprise, suivi d'une boîte de message de confirmation qui demande à l'utilisateur "Voulez-vous commander un pack de conception Web aujourd'hui ?". Le problème vient de mes instructions "if" et "else if". L'instruction "if" devrait afficher une boîte d'alerte "Merci pour votre commande" lorsque l'utilisateur clique sur "OK", et une autre instruction "else if" qui devrait afficher une boîte d'alerte "Nous apprécions votre temps" lorsque l'utilisateur clique sur "Annuler". La fonction est appelée par un script onClick. Les boîtes d'invite et de confirmation apparaissent mais je n'arrive pas à comprendre pourquoi mes boîtes if et else if n'apparaissent pas. Que me manque-t-il ? Toute aide est appréciée. Merci.

<SCRIPT language = "Javascript">

function submitOrder() {

var companyName = prompt("Please enter company name.", "")

var willOrderPackage = confirm("Would you like to order a Web Design package today?")

if (willOrderPackage == "true") {
   alert("Thank you for your order.")

}else if{
   alert("We appreciate your time.")
}
</SCRIPT>

14voto

jamesinc Points 424

Il existe en fait deux constructions if..else différentes. La première est un simple if-else :

if ( condition ) {
   // Do stuff if condition is true
} else {
   // Do stuff if condition is not true
}

Le suivant est un if-else-if :

if ( condition ) {
   // Do stuff if condition is true
} else if ( differentCondition ) {
   // Do stuff if differentCondition is true
} else {
   // Do stuff if neither condition nor differentCondition is true
}

Vous pouvez également utiliser else-if autant de fois que vous le souhaitez, par ex :

if ( condition ) {
   // Do stuff
} else if ( condition2 ) {
   // etc
} else if ( condition3 ) {
   // etc
} else if ( condition4 ) {
   // etc
} else {
   // etc
}

Et chaque partie d'un if..else est facultative, à l'exception du bloc if initial. Donc si vous ne voulez rien faire si condition n'est pas vrai, vous pouvez tout simplement omettre le bloc else :

if ( condition ) {
   // do stuff if condition is true
}

HTH

Au-delà de votre question pour un moment, l'expression évaluée dans la condition de votre instruction if est un peu bancale.

willOrderPackage sera toujours true o false mais il est important de noter que true y "true" o false y "false" sont différentes. Le premier est booléen, le second est une chaîne de caractères.

Donc, votre phrase "si" devrait demander :

if ( willOrderPackage == true ) {

Mieux encore, lorsque vous évaluez une expression dans une instruction if, il y a un lien implicite entre l'expression et l'instruction. == true à l'extrémité de celui-ci qui est invisible. Par exemple :

if ( willOrderPackage == true ) {

serait interprété comme :

if ( (willOrderPackage == true) == true )

L'avantage de cette méthode est que vous pouvez omettre l'ensemble des éléments suivants == true de votre code, vous pouvez donc simplement écrire :

if ( willOrderPackage ) {

Et en fait, vous dites toujours "si willOrderPackage est vrai".

J'espère que cela aidera à clarifier certaines choses pour vous !

7voto

mrmryb Points 1439

Votre else if n'a pas de condition, utilisez else

comme indiqué

if (willOrderPackage == "true") {
alert("Thank you for your order.")

est erronée : willOrderPackage est un booléen, il peut donc être

(willOrderPackage == true)

ou mieux encore

(willOrderPackage)

2voto

mgraph Points 11213

Il est également préférable d'utiliser :

if (willOrderPackage) {

au lieu de :

if (willOrderPackage == "true") {

1voto

Changer pour :

if (willOrderPackage) {
   alert("Thank you for your order.")

}else{
   alert("We appreciate your time.")
}

0voto

Christian Points 12142

C'est comme ça qu'il faut faire :

<script type="text/javascript">

function submitOrder() {
    var companyName = prompt("Please enter company name.", "");
    var willOrderPackage = confirm("Would you like to order a Web Design package today?");

    if (willOrderPackage) {
        alert("Thank you for your order.");
    }else{
        alert("We appreciate your time.");
    }
}

</script>

Les choses que j'ai faites :

  • un style de codage modernisé
  • passage à l'attribut type au lieu de la langue
  • ajout de points-virgules à la fin de chaque ligne
  • supprimé les éléments superflus if mot-clé
  • ajout d'une accolade fermante qui manquait à l'origine
  • a supprimé la comparaison avec une chaîne de caractères true, la comparaison avec des valeurs booléennes n'en a pas besoin

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X