• ベストアンサー

問題をランダムに出すページの作成

 よろしくお願いします。  外国語の単語暗記のために、問題がランダムで出てくるページを作りたいと思っています。  たとえば、一つの言葉に対して、三つの項目(外国語表記、発音、日本語訳)を設定し、それを数百語ほど入力しておきます(発音記号表示の問題についてはここでは無視してください)。ボタンを押すことによって一つあるいは複数の外国語表記が表示され、別のボタンを押すことによってその語に対する残りの項目が表示される、というような仕組みにしたいのです。  JavaSciriptで、ランダム技ができるということまでは分かりましたが、まだまだwebページ作成技術が低い私としては応用できません。上記のようなページ作成が可能であれば、お教え下さい。  また、webページよりも、例えばエクセルなどを利用した方がいい、という場合もあるでしょう。そのような情報も教えて頂けるとうれしいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • itochanda
  • ベストアンサー率36% (8/22)
回答No.2

以下のようにつくってみました。 データの増やし方わかりますよね? とりあえず試してみて! <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>random test</title> <script type="text/javascript" charset="Shift_JIS"> var mondai_max = 4; // 問題の数 var dat = new Array(); dat[0] = new Array("one","ワン","一"); dat[1] = new Array("two","ツー","二"); dat[2] = new Array("three","スリー","三"); dat[3] = new Array("four","フォー","四"); dat[4] = new Array("","",""); // 最後につける var mondai = mondai_max; var soeji = new Array(); soeji["en"] = 0; soeji["pro"] = 1; soeji["jp"] = 2; function f_clear() { document.f1.reset(); mondai=Math.floor(Math.random() * mondai_max); } function f_write(i_name) { document.f1.elements[i_name].value = dat[mondai][soeji[i_name]]; } </script> </head> <body> <form name="f1" onsubmit="return(false);"> <input type="button" value="new" onclick="f_clear();f_write('en');return(false);"> <input type="text" name="en"><br> <input type="button" value="発音" onclick="f_write('pro');"> <input type="text" name="pro"><br> <input type="button" value="意味" onclick="f_write('jp');"> <input type="text" name="jp"><br> </form> </body></html>

babusan
質問者

お礼

 回答ありがとうございます。  思っていたとおりの機能が実現できていますね。本当に助かりました。ひな形を元に応用をする力はあると思いますので、これを自分なりに味付けてして利用していきたいと思います。  どうもありがとうございました。

その他の回答 (1)

  • moccos
  • ベストアンサー率43% (61/140)
回答No.1

回答がないようなので・・・ 方法はいくつかあると思いますが私の考え方だと結構面倒?かもしれません。 1.HTMLのコーナーの質問なので。 >JavaSciriptで、ランダム技ができるということまでは分かりましたが・・・  とありますので、数百語分のHTMLファイルを作り var ran= Math.floor(Math.random()*200 ); window.open(ran + '.htm');  でリンクする。大変そう(^^; 2.JavaSciript内で条件分岐してalertとして表示する。例えば <HTML> <HEAD> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS"> <TITLE></TITLE> <SCRIPT language="JavaScript"> <!-- function rand() { var ran= Math.floor(Math.random()*200 ); switch(ran) { case 0 : alert("Language"); alert("lan・guage /lgwd/"); alert("[音声・文字による]言語"); break; case 1 : alert("Practice"); alert("prac・tice /prkts/"); alert("練習,けいこ "); break; case 2 : alert("Money"); alert("mon・ey /mni/"); alert("金(かね); 貨幣,通貨"); break; case 3 : alert("hogehoge"); alert("*******"); alert("ほげほげ"); break; case 4 : alert("asdf"); alert("*+:::;:"); alert("ほにゃら"); break; // 5~198は省略 case 199 : alert("Wine"); alert("wine /wn/"); alert("ワイン。葡萄酒"); break; default : alert("準備中です。"); break; } } //--> </SCRIPT> </HEAD> <BODY> <form name="f1"> <input type="button" onClick="rand()" value="問題を開く"> </form> </BODY> </HTML> これも数百書くのは大変でしょうしサイズが大きくなるとレスポンスが悪くなる気がします。 JavaSciriptでも外部ファイルから読み込みが出来るかもしれませんが、当方は残念ながら知識不足です。 3.現実的にはエクセルのVBAで作ったほうが多分楽だと思います。  一覧表を作って乱数からVLOOKUP関数で表示するようにすれば追加更新も楽です。  その場合はカテゴリーを変えて質問されたらVBAエキスパートの方から回答があると思います。 あまり参考になってないですね。すみません。

babusan
質問者

お礼

回答ありがとうございます。  大変参考になりました。特に3で言われていることで、何となくピンときました。大いに助かりました。

関連するQ&A