2012-03-02 8 views
1

私は、生徒のための入門言語としてJavaScriptを使用する可能性に興味があります。私の欠けている部分は、他の言語で利用可能なinput()コマンドと同等のブロッキング機能を提供する機能です。JavaScriptで同期入力を行うことはできますか?

コンソール専用バージョンのJavaScriptを使用すると、SpiderMonkeyのような解決策になります。 SpiderMonkeyにはreadline()コマンドがあります。しかし、学生はウェブブラウザの中で動くコードにもっと興味があると思う。学生が友達と彼らの古典的な「1から10の間の数字を推測する」バージョンを分かち合うことができればうれしいでしょう。

JavaScript window.prompt()コマンドも機能しますが、完全に別のウィンドウをポップアップするというのは理想的ではありません。同じ方法で動作するドキュメント内の入力フィールドが必要です。そのような解決策はありますか?

答えて

1

prompt()は、ブロッキング入力方法として頭に浮かぶ唯一のものです。なぜそれをブロックする必要があるのか​​正確にはわかりませんが、おそらくjQuery blocking plugin を使用してブロック(少なくともUI)を達成できますか?

+0

jQueryブロッキングプラグインはWebページをブロックしますが、実行中のコードをブロックしません。私は、コードをブロックし、ブラウザを実行させ続けることを望んでいます。 –

0

入力テキストとボタンを使用します。ボタンを押すと、テキストを取得して処理し、入力テキストを消去して新しい使用法を確認します。

また、あなたがpromptを使用することができ、Webブラウザでhttp://jsfiddle.net/

0

を使用を検討することができます。それは非常に昔ながらのもので(alertなど)、(ほぼ完全に)と同時に動作します。したがって:

var str; 
str = prompt("Enter some text: ", ""); 
console.log("You entered '" + str + "'"); 
str = prompt("Enter some more text: ", ""); 
console.log("You entered '" + str + "'"); 

Live example | Live source

代わりに、私はおそらく、学生がコールバックを使用し、いくつかのユーティリティコードを提供することを奨励する(またはいくつかの事前に構築されたものを使用する)ことをお勧めしたいと思います。彼らがすぐにそれに慣れば早くなるほど、より良い、それは複雑ではありません。例えば、上記の非同期バージョンを容易にすることができます

asynchronousPrompt("Enter some text: ", "", function(text) { 
    console.log("You entered '" + text + "'"); 
    asynchronousPrompt("Enter some more text: ", "", function(text) { 
     console.log("You entered '" + text + "'"); 
    }); 
}); 
+0

これらの学生はまだ自分の機能を書くことさえ紹介されていません。自分のコールバックを書くのは時期尚早です。 私は、関数、コールバック、さらにはHTMLの複雑さのない式、if文、およびループを作成する方法を学べるようなコードを書くことができるようにしたいと思います。何らかの種類のコンソールタイプの設定ですが、代わりにブラウザで設定します。 –

+0

@ PaulVincentCraven:LOL!けっこうだ。だから、最初は「即刻」が行くだろう。 :-) –

-1

NodeJsはあなたのための解決策ですか? REPL afaikをサポートしています。また、STDIOの実装もあります。

0

Synchronous Execution in JavaScriptは、JavaScriptを使用して同期操作を実行するための素晴らしい書き方とサンプルコードを提供します。

+0

この記事では、コードをリストに入れてから、eval()を順番に実行する方法について説明します。それは分岐やループが必要な場合を除いて素晴らしいです。 –

+0

@PaulVincentCraven - 分岐やループは、おそらく、条件判断基準に基づいて必要な機能を呼び出す "main"プロセスによって制御される必要があります –

1

私はあなたがそれを行うには素晴らしい方法を見つけるとは思っていません。私はこれがプログラミングの非常に基本的なコースであると仮定し、学生が何かを達成できると感じるようにします。その場合、私は入力フィールド、ボタン、関数にフックされたonclickハンドラを含むhtmlコードを提供します。

生徒はすぐに入力フィールドとボタンを追加する方法を学びます。あなたと私がテキストのみの環境でプログラミングすることを学んだからといって、今日の学生はすべきではありません。

関連する問題