Javascriptを用いた教材作成者のための覚え書き編集利用可能サンプルなど)
 
目次
◇要点
右側のリストにあるスケルトン(骨格)のファイルを、ご自分のパソコンに保存してから、Composer,ビルダー,フロントページ・エクスプレスなど問題文を書き込み、テキストエディタで解答を書き込めば出来上がりです。問題数を増減するとき、採点関数をテキストエディタで調整します。(一つのファイルを、Composerとテキストエディタで同時に編集すると、様々なトラブルを生じます。Composerを閉じてからテキストエディタで編集するとうまくできます。(NavigatorやInternet Explorerとは両立できます.)その後、さらにComposerで形を整えることも可能です。)
下記の左側は考え方を書いた記事です。
◇ [基本的な考え方](これが大切!)
「簡単な応答ページの作り方」
■文字をクリックする形式の選択肢の骨格(5択10題:○×の絵
■同 (4択8題:くまの絵)
◇ 「図形要素を選択肢とするには
(1)クリカブルマップの利用」
  
◇ 「図形要素を選択肢とするには
(2)イベントxy座標の取得,スタイルシートの利用」
 
◇ 「ヒントの文字をあぶり出しにするには」 ■テキストボックス型の入力欄でヒントがあぶり出しになるものの骨格
■同 (8題:さくら散るの絵「やり直す」でヒント,評価を更新する
◇ 「チェックボックス,ラジオボタン,リストボックスで選択肢を作るには」 ■チェックボックスによる選択肢の骨格
■同 (5題選択肢5個:かえるの絵)
■ラジオボタンによる選択肢の骨格
■同 (5題選択肢変化:ありの絵
■リストボックスによる選択肢の骨格
■同 (10題選択肢各5個:コーヒーの絵
準備するもの
1 Netscape Communicator(無料ソフト),ホームページ・ビルダー,フロントページ・エクスプレスなどのWebページ作成ソフト. これにより画面構成の骨格を作成しておきます.
2 ペイント(Windows付属):問題や解説の画像を作ります.
3 メモ帳(Windows付属):Javascriptのコードを記述します.(もっと便利なテキストエディタがあれば,その方が有利です.) FrontPageExpressでは,画面切り替えでコードも編集できます.
4 画像処理ソフト:ペイントで作成したBMPファイルをJPG,GIF,(PNG)形式に変換します.
5 Microsoft Internet Explorer(無料ソフト):
 (1) 古い資料でシェア4分の3程度とされていますので,IEでも作動確認することが重要です.
 (2) もう一つ,IEにはデバッグ機能があり,「何行目の何文字目が誤りか」分かりますので,思いがけないミスを捜すのに便利です.


[その他の参考資料]以下は,特に関心のある方だけお読みください.
画面構成 と 使用したJavascriptメソッド一覧
 

画 面 構 成

使用した手法

使用しているページ
(1例↓)

■読み出すたびに問題・解答カードを変える
Math.random()の利用
かっこをはずす
 → 上記の改良版
問題配列番号=Dateオブジェクト名.getSeconds() % 配列の個数;
 正負の和差
 → ジョーカーを含めてまぐれ当たりを防ぐ
組み合わせが合わない配列要素にジョーカーを割り当てる
展開と因数分解
ボタンを押せば問題の図を変える
document.(form名).abc.src=..;
てこ1
タイマー:アニメGIF → ストップ:普通のGIF
onClick="document.(form).abc.src=配列[time].src;"
文字・方程式
どの点を押したかを判断する
(HTMLでの)クリカブルマップ
正負の数
■ → y=x上の点などを正解とするとき
スタイルシート,スクリーンxy座標から数学座標への変換,IE|NNに応じた場合分け
関数→点
グラフの移動
スタイルシート,スクリーンxy座標から数学座標への変換,IE|NNに応じた場合分け
2次関数のグラフ
データのクイックソート
配列[ sort(比較関数名) ]
資料の整理
ちょうちょを飛ばせる
スタイルシート,onMouseMove,IE|NNに応じた場合分け
三種混合
ヒントボタンで解説文をあぶり出しにする
 スタイルシート,visibility:hidden→ visible;,IE|NNに応じた場合分け
  最大公約数
チェックボックスで複数個の解答を求める
 if(document.form名.checkbox名.checked == true && ......)
 図形の移動
ラジオボタンで択一問題を作る
 if(document.form名.radioボタン名.checked == true)
 ジャンケンの確率
テキストボックスで記述問題にする
  if(document.form名.textbox名.value == "..")
 正負の数
正解数をテキストボックスに表示する
document.form名.textbox名.value = "...";
問題以上...
正解数をボタンに表示する
document.form名.button名.value = "...";
比例
テキストエリアに未定量の文字を表示する
(HTMLでの)<textarea wrap="virtual"></textarea>
素数表
数表に代わる関数電卓の表示
Math.sin() ; Math.cos();
三角関数
■ダイアログボックスにメッセージを表示する
window.alert();
同様な確からしさ
■次の問題を捜しているふりをする(売り切れ表示を遅らせる)
終りを表わすファイル名を直接書く(←→比較:メモリから出す)
京の通り
■全問正解に挑戦させる
setTimeout('window.location="ファイル名"',ミリ秒,)
係数の決定
■用語埋めの選択問題
<a href="javascript:採点関数></a>
2次関数の用語
 
さらに進んだ利用法
◇ 「かっこをはずす」(math/moji003.htm)では,
 1) 読み出すたびに問題・解答の順序が変わるようにしました.
 key = Math.floor(6 * Math.random()); で発生させた0から5の乱数で系列0〜5を決めます.これにより,toi[0] 〜toi[5]までのどれかの配列が選択されます.toi[0] 〜toi[5]までのどれについても,前半を0から9,後半を10から19までとして,無秩序に数字を並べておきます.0から9の要素に問題を割り当てると左側に表示されます.10から19までの要素に解答を割り当てると右側に表示されます.プログラム上は問題と解答の対応は見えませんが,問題:kakko201.gif(=kakko201.jpg)の解答がkakko301.gif(=kakko301.jpg)です.以下同様です.
 2) 問題や解答をマウスで選択したときに,カードが反転表示されるように工夫しました.
 まず,Windows付属の「ペイント」により,のような画像を作成しておき(BMPファイル:問題10個,解答10個),そのままJPGにバッチ変換したもの(JPGファイル20個)と,紺色を透過色に指定した透過GIF(GIFファイル20個)の2種類合計40個のファイルを作ります.一つのBMPファイルを2通りに保存する所が秘訣です.あとは,プログラム上でflagの値により,1つ選択して反転表示とするか,照合して判定するかを決めています.
 なお,正解となって画面から消えたカードが生き返らないようにsumi[]という配列に,「選択済み」のマークを入れています.
 プログラム上,解答から先に選択してもかまわないようになっていますが,ほとんどの生徒は問題から選択する思います.
  
 3) kr[0] は始めに表示しておく白紙の絵です.(何も見えません).kr[1] は全部正解したときに出るごほうびの絵です.

 4) ほとんどすべてのファイルで,テーブルを組むときに横幅750に設定しています.これは,少し前のノート型パソコンなどで800×600のものが多いためです.このような制限は2,3年もすれば不要になると思いますが,しばらくこうしておきます.(もし,640×480などのデスクトップがあるとしても,考慮していません.クライアント側のディスプレイの解像度や文字サイズによって,見かけが変わるのを防ぐには,スタイルシートを設定する方が確実だと思われますが,IEとNNに応じた場合分けが大変なので一部しか使用していません.)

 5) 誰でもできる問題作成《国語教材:「百人一首」上の句,下の句カード合わせを作る場合》

ア Netscape Navigatorで「かっこをはずす」を読み込みます.
イ ファイル → ページを編集 → ファイル → 名前を付けて保存(自分のパソコンの特定ドライブ,特定ディレクトリを指定します.)
  ※ これで実際上のプログラムは完成しています.
留意点:
 サーバー側と同一のディレクトリ構造を作っておく
 以上の手順は,他の誰のホームページに対しても行うことができます.正確に言えば,画像データなどの参照ファイルがサーバ上の別ディレクトリに置かれているときは,参照ファイルは自動的にはついてきません.同一ディレクトリにあるファイルは一緒に連れてきます.もし,別ディレクトリ,例えばIMGというディレクトリに画像ファイルが整理されているとき(ソースを表示すれば分かります)は,あらかじめ自分のディレクトリの中に同一構造のサブディレクトリを作成しておけば,参照されている画像ファイルもそのディレクトリに連れて来ることができます.
 私のホームページではこのような手間も省くため,画像ファイルなども全部同じディクトリに保存していますので,単純に ファイル → ページを編集 → ファイル → 名前を付けて保存 としていただければ,body部分に記述された画像ファイルは,全部ついてきます.
 なお,画像ファイルのうち,元のサイズとブラウザ上のサイズが異なる場合(width=... height=... の記述による),マウスでドラッグするか画像をダブルクリックして縦横サイズを数値で入力するかして直さないと,元のホームページと見かけが異なる場合があります.
 私のホームページではこのような手間も省くため,原則として元のサイズを変更していません.

 コピーと著作権
 まず,ブラウザで閲覧するということは,閲覧者の意図とは無関係に,他人のホームページのコピーを自分のパソコン内に作成して,それを見るということですので,同一性が保持されている限り,著作権を侵害するということは考えにくいことです.ホームページとして公開してから,この段階での「コピー」が著作権侵害であるかどうかを議論することは,公開が間違いであるというのとほとんど同じです.
 これに対して,上記イのように,ファイル → ページを編集 → ファイル → 名前を付けて保存 とし,ホームページを改変していくと,著作権を侵害する可能性はあります.少なくとも同一性保持権を侵害しています.(自分のパソコン内で私的利用として研究するだけなら,問題ないでしょう.しかし,改変したものを,自分のホームページにアップするのは,全くの著作権侵害です.だから,ほとんどすべてのホームページについて,上記イの操作は,私的研究以外には使えません.)

ウ 百人一首のホームページを作成するために,Windowsのペイントなどを使って,上の句と下の句のカードを作成します.
実際に作成するBMPファイルは のようなものです.
これを,そのままJPG形式にBatch Conversionしたものと,背景色(紺色:color index=6)をtransparentに指定して
透過GIFにBatch Conversionしたもの を作ります.
各々のファイル名をogura001,jpg, ogura101.jpg, ogura001.gif, orura101.gif などとします.
これで,初め透過GIFで見えていたものをクリックすると反転色に見えるようになります.また,○△◇001.GIFに対応するものは○△◇101.GIFとなります.

エ Netscape Composer上で,問題文を書き換えます.また,タイトルは,書式 → ページの配色とプロパティ で直します.
オ 画像に文字が書いてある場合は,特に縦横の比率を変更して表示すると文字がつぶれて読みづらくなりますので,ブラウザ上の表示サイズをペイントで作成した元ファイルのサイズに合せます.秀丸(シェアウェア)などで,height=.. width=.. を一括置換します.
カ 上の句,下の句ファイル名を一括置換します:置換:kakko2 ->ogura0, kakko3->ogura1とします.
キ HTMLファイルのヘッダ部分に書かれたファイルは,自動的にはついてきませんので,新たに正解のお知らせ(KRメッセージ用)ファイルを作成して,kr[1].src=..として記入します.見本では,o63.gifとしています.)
キ 保存してでき上がりです.

※ Internet Explorerで名前を付けて保存すると,画像は専用のディレクトリに保存されます.

→ 試作品

←メニューに戻る