1
プロンプト番号のtimesテーブルを表示する小さな練習プログラムを作成しました。プロンプトが関数の後にある場合でも、関数の前にJavascriptプロンプトが表示されます
ユーザーにどの番号を入力するかを尋ねられたら、テーブルを表示します。ユーザーが-1以外の番号を入力した場合は、別の番号を尋ねます。
私が探しているシーケンスは、ユーザ、ユーザを促し、ユーザを促し、残念ながら、私のプログラムが動作する順序は、ユーザーがプロンプトです...ユーザーがテーブルを表示促し、テーブルを表示するプロンプトです...そしてそれだけで、各入力のテーブルが表示されます。
明らかに、コードはそのように書かれていません。
\t \t // get number to show time table for
\t \t var aNumber = prompt("Enter the number for time table or -1 to stop the program", "");
\t \t
\t \t while(aNumber != -1) {
\t \t \t timeTableFrom(aNumber); // show time table for the first number
\t \t \t aNumber = prompt("Enter the number for time table or -1 to stop the program", ""); // ask for another number. HERE IS THE PROBLEM - THIS LINE RUNS BEFORE THE PREVIOUS ONE!
\t \t \t
\t \t }
\t \t
\t \t document.write("stopped");
\t \t
\t \t \t \t
\t \t
\t \t function timeTableFrom(number)
\t \t {
\t \t \t for (var i = 0; i <= 10; i++)
\t \t \t {
\t \t \t \t document.write(number + " * " + i + " = " + number*i + "<br />");
\t \t \t }
\t \t \t
\t \t }
'while'ループはブラウザが持つ唯一のスレッドをブロックします.JSの実行が終了する前に結果をレンダリングする時間がありません。あなたはあなたが望むことを達成するために[タイマー](https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers)を使用しなければなりません。 (そして、 'document.write'を適切なDOM操作関数に置き換えてください。) – Teemu
ようこそ!スクロールしないようにコードを書式設定することにより、お手伝いをすることができます。 – zhon
ありがとうございます@テム –