2016-10-14 2 views
0

私がしようとしているのは、英語の各文字の平均頻度の割合を、指定されたメッセージの長さに表示する必要のある回数に変換できるWebサイトを作ることです。ここでは、動作していません。私は、コードの見えない部分に尋ねプロンプトから与えられた数が0より大きい だから、後にある場合にのみ、しかし、それは通常のように私の残りのスクリプトを実行されて何をしたいのか私のIF文が偽であれば、if/else文が一連の関数を実行するにはどうすればよいですか?

var Messagelength = prompt("What is the length of a single passage from the broken-up cryptogram? Write down as the numbers appear, or else you will need to refresh this page and try again."); 
if (0 >= Messagelength)(true){ 
    confirm("No negative numbers or 0 are accepted")}; 
if (0 >= Messagelength)(false){ 
var MessagelengthA = function(number) { 
    var PercentageA = number * 0.08167; 
    confirm(PercentageA); 
}; 
}; 

人々が私に言ったことをいくつかの試み、私はこれが私の目標に向かって私の最高の踏み台であると判断してしまった。しかし、問題は解決されません。 2番目のif文を削除すると、最初の再生は関係なく、1番目のif文を削除するか、2番目のif文をそのまま残すと、何も起こらず、Messagelengthの値が何であるかを決定する最初のプロンプトさえありません。要約すると、私の質問は、26種類の関数のスクリプトを実行するにはどうすればよいのですか?ただし、ユーザーがプロンプトに入力する数値が0より大きい場合にのみ、26以上の関数を実行しないでください0より?

編集:私のエラーを見つけて修正することができました。私はif文の最後にセミコロンを付けました。そこにはいけません。スクリプトはついに私が望んでいたやり方で働いています。ありがとう!

+1

3行目には、「continue」ステートメントがあります。これは、ループ内でのみ有効です( 'for'、' while'など)。このコードがループ内にない場合は、そのコードを使用することはできません。それが関数の中にあり、それを止めたいのであれば、代わりに 'return;'を使用してください。 – blex

+0

なぜあなたは結果を使用しないときに 'confirm'を使用していますか?あなたがOKかCancelをクリックしても気にしなければ、 'alert'を使ってポップアップメッセージを表示してください。 – Barmar

答えて

1

continueを削除します。それはループ本体を再起動するためのものです。

ifステートメントは、特定の条件が真である場合にのみコードを実行する方法を提供します。そうであれば、そのコードブロックが実行されます。それに関係なく、次のブロックが実行されます。

if (true) { 
 
    console.log('The condition is true so I run'); 
 
} 
 
console.log('I run just because I come next in the script'); 
 
if (false) { 
 
    console.log('I will never run'); 
 
} 
 
console.log('Again, I will run');

だからあなたのコードが自動的にあなたのifステートメントの後に実行されます。あなたが望むように聞こえるのは、への道です。次のコードは、状況によっては動作しません。最も簡単な方法はelseです。

if (true) { 
 
    console.log('true condition, I run'); 
 
} else { 
 
    console.log('I do not since the preceding `if` block did'); 
 
} 
 

 
if (false) { 
 
    console.log('I will not run'); 
 
} else { 
 
    console.log('since the condition failed, I will run'); 
 
}

+0

しかし、私の問題はif文に入る必要のある関数があるため、ブラケットエラーが発生することです。 –

+0

@AndrewSladkyブラケットのエラー?それは意味をなさない。角括弧を正しく一致させる限り、関数は 'if'文の中に絶対に入れることができます。 –

2

あなたの質問のタイトルでそれを言いました。これはif/elseステートメントなので、残りのコードはelseブロックに入れてください。

var MessagelengthA = function(number) { 
    var PercentageA = number * 0.08167; 
    confirm(PercentageA); 
}; 
if (MessageLength <= 0) { 
    alert("No negative numbers or 0 are accepted"); 
} else { 
    MessageLengthA(MessageLength); 
    // rest of code here   
} 
+0

そのために問題はあるようです。最初のif/elseステートメントの後には、一連の26個の関数と変数呼び出しがあり、変数名の末尾にある文字(それらが表すアルファベット値に対応する)を除いてすべて同一です。 私はこれを試しましたが、それはウェブサイトでは実行されません。私の唯一の –

+0

のようなコードはおそらく26の異なる関数呼び出しではなく、ループでなければなりません。また、文字や数字だけが異なる変数がある場合は、配列やオブジェクトであり、別々の変数ではないはずです。しかし、この答えに関しては、問題ではありません。 'else'ブロックに必要なだけ入れることができます。 – Barmar

関連する問題