Sc283(1) 情報科学応用演習I 資料 (Part 11) 

[解説] フォーム(その2) - 種々のフォーム部品

※ 汎用ボタンとテキストフィールドについては(その1)とその 例のページ を参照してください.

[解説] JavaScript 外部ファイル

(参考: JavaScript 外部ファイル in とほほのJavaScriptリファレンス)

通常,JavaScript のコードは,<script> 〜 </script> の間に書かれる (→ JavaScript の書き方) が,その代わりに, 別のファイルに JavaScript のコードだけを書いておき, そのファイル名を <script> タグの src 属性で指定しても良い. この場合,<script> 〜 </script> の間には何も書かない. したがって,仮にJavaScriptのコードを書いたファイル名を code.js とすると,

<script type="text/javascript" src="code.js"></script>

のように書くのが一般的である.なお,JavaScript のコード(だけ)を書いたファイルの拡張子は, 通常,.js とするのが一般的である. 以下に例を示す.

(myrandom.js の内容)
// 0 〜 n-1 の乱数を返す関数
function myRandom(n) {
    return Math.floor(Math.random() * n);
}
(js11-b.html の内容)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>JavaScript Sample 8-B</title>
<!-- myrandom.js の引用 -->
<script type="text/javascript" src="myrandom.js"></script>
<script type="text/javascript">
<!--
function init() {
  var n, m;
  n = myRandom(10)+1;   // myRandom(…) の利用
  m = myRandom(10)+1;   // myRandom(…) の利用
  document.f.prob1.value = n + " + " + m + " =";
}
//-->
</script>
<body onload="init();">
<form name="f" action="">
<input name="prob1" size="9" type="text" readonly>
</form>
</body>

下記リンクに実行可能なページを用意しておく.(別ウィンドウで実行される)

実行可能な例


[タスク] データベース (1)

概要

「だれが」「いつ」「どこを(どこに)」「出た(着いた)」かの情報を,一般オブジェクトの配列として, 外部ファイルでリテラルとして定義しておき,それを引用して検索するプログラムを作成する, 検索の問い合わせは,「だれが」「どこを(どこに)」「出た(着いた)」かを入力し,該当する「いつ」 を答えるものとする.

詳細

「だれが」「いつ」「どこを(どこに)」「出た(着いた)」かの情報を格納したファイルは js11-1.js という名前で作成するものとし,以下のようなものを想定する.

/* db は,一般オブジェクト{who,when,action,where} の配列 */
var db = [
{who: "太郎", when: "07:30", action: "出た",   where: ""},
{who: "太郎", when: "08:45", action: "着いた", where: "教室"},
{who: "花子", when: "10:00", action: "出た",   where: ""},
{who: "花子", when: "10:30", action: "着いた", where: "教室"},
{who: "次郎", when: "12:00", action: "出た",   where: ""},
{who: "太郎", when: "12:30", action: "出た",   where: "教室"},
{who: "太郎", when: "12:40", action: "着いた", where: "食堂"},
{who: "次郎", when: "12:50", action: "着いた", where: "教室"},
{who: "太郎", when: "13:30", action: "出た",   where: "食堂"},
{who: "太郎", when: "13:40", action: "着いた", where: "部室"},
{who: "花子", when: "14:40", action: "出た",   where: "教室"},
{who: "次郎", when: "14:40", action: "出た",   where: "教室"},
{who: "花子", when: "15:10", action: "着いた", where: ""},
{who: "次郎", when: "15:30", action: "着いた", where: "バイト先"},
{who: "太郎", when: "17:00", action: "出た",   where: "部室"},
{who: "次郎", when: "17:20", action: "出た",   where: "バイト先"},
{who: "花子", when: "17:40", action: "出た",   where: ""},
{who: "次郎", when: "17:40", action: "着いた", where: "レストラン"},
{who: "花子", when: "18:00", action: "着いた", where: "レストラン"},
{who: "太郎", when: "18:30", action: "着いた", where: ""}
];

このファイルは下記リンク先に置いておくので,保存して用いるとよい.

また,プログラムの雛形を以下に示す,

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<title>JavaScript Sample 11-1 a</title>
<!-- db の定義の引用 -->
<script type="text/javascript" src="js11-1.js"></script>
<script type="text/javascript">
<!--
function search() {
    // ここで検索をする.

    // db のデータ数は db.length で得られるので,
    // 変数 i を 0 〜 db.length-1 と1ずつ変化させて,
    // db[i] で得られる各一般オブジェクトのうち,
    // 入力条件に合うものがあれば,その時刻 (when) を出力する.

    // 例えばi番の一般オブジェクトの who のデータは,
    // db[i].who のようにして得られる.
}
// -->
</script>
<body>
<form name="f">
<input type="text" name="who"> が
<input type="text" name="where"> を(に)
<input type="text" name="action"> のはいつ?<br>
<input type="button" value="検索" onclick="search();"><br>
<input type="text" name="when" readonly>
</form>
</body>

以下に例を示す.リンクをクリックすれば実行できる.(別ウィンドウで実行される)

js11-1a.html雛形,例のコードと流れ図


[課題] データベースプログラムの改良

課題番号: 11-1
課題名: データベースプログラムの改良
ファイル名:task11-1.html, task11-1.doc
締切: (別途指示する)

内容

先のタスクの「データベース (1)」のプログラムを改良する.改良は自由に創意工夫をほどこして行ってよい. 例えば,以下のような改良が考えられる.

など.なお,データベースは上記タスク「データベース (1)」と同様に, js11-1.js を使用すること.

提出物

作成したプログラムのファイルと (task11-1.html), MSワードで作成したレポートのファイル (task11-1.doc) を提出する. レポートには,以下の内容を含めること.

また,課題レポート提出に関する諸注意 に従い, レポートの第1ページは表紙として,必要な事項を記載すること.