ウェブブラウザーはHTMLを解釈して豊かな表現をすることができる。 これまで行ってきたJavascriptの出力(document.write)はHTMLの中に埋め込まれたものとしてブラウザーに解釈されている。 今回の講義ではさらにHTMLを意識した出力を行い、表現を豊かにする。
HTMLは応用生物化学科向けの生物情報リテラシーの時間に説明してある。 HTMLがわからないときは以下の講義資料を参照してください。
<!DOCTYPE HTML>
<html lang='ja_JP'>
<body>
<script type='text/javascript'><!--
/*
* HTMLを出力する
*/
document.write("<h1>見出し レベル1</h1>");
document.write("<h2>見出し レベル2</h2>");
document.write("<h3>見出し レベル3</h3>");
// H1からH6までを出力する
for(var n = 1 ; n <= 6 ; n ++){
document.write("<h" + n + ">見出し レベル" + n + "</h" + n + ">");
}
// 本文はpタグを使うとよい
document.write("<p>ここに文章を書く。</p>");
// 箇条書き (番号付き)
document.write("<ol>"); // ordered list の略
for(var n = 0 ; n < 5 ; n ++){
document.write("<li>" + n + "番目</li>");
}
document.write("</ol>");
// 箇条書き (番号付き)
document.write("<ul>"); // ordered list の略
for(var n = 0 ; n < 5 ; n ++){
document.write("<li>" + n + "番目</li>");
}
document.write("</ul>");
--></script>
</body>
</html>
前回の素数を出力するプログラムを改良し、番号付き箇条書きにして出力せよ。
HTMLでは表をつくることができる。 以下に表をつくるためのHTMLのコードを示す。
<table> <thead> <tr><th>見出し1</th><th>見出し2</th></tr> </thead> <tbody> <tr><td>1行目1列</td><td>1行目2列</td></tr> <tr><td>2行目1列</td><td>2行目2列</td></tr> <tr><td>3行目1列</td><td>3行目2列</td></tr> </tbody> </table>
| 見出し1 | 見出し2 |
|---|---|
| 1行目1列 | 1行目2列 |
| 2行目1列 | 2行目2列 |
| 3行目1列 | 3行目2列 |
<!DOCTYPE HTML>
<html lang='ja_JP'>
<body>
<script type='text/javascript'><!--
/*
* 表を出力する
*/
document.write("<table>");
document.write("<thead>");
document.write("<tr>");
document.write("<th></th>"); // 空のマス
for(var c = 1 ; c <= 10 ; c ++){
document.write("<th>" + c + "列</th>");
}
document.write("</tr>");
document.write("</thead>");
document.write("<tbody>");
for(var r = 1 ; r <= 10 ; r ++){
document.write("<tr>");
document.write("<th>" + r + "行</th>");
for(var c = 1 ; c <= 10 ; c ++){
document.write("<td>" + r + "行" + c + "列" + "</td>");
}
document.write("</tr>");
}
document.write("</tbody>");
document.write("</table>");
--></script>
</body>
</html>
九九の表を作成せよ。
HTMLはユーザーが値を入力するフォームを用いることができる。 フォームの要素にはテキストボックス、ボタン、ラジオボタン、セレクトボックスなどがある。
<input type='button' value='表示する文字列'>
上のボタンはクリックされたときの動作が設定されていないので、クリックしても何も起きない。
input要素のonclick属性にJavascriptの関数を指定すると、ボタンがクリックされたときにその関数が実行される。
<!DOCTYPE HTML>
<html lang='ja_JP'>
<body>
<script type='text/javascript'><!--
/*
* クリックされたときに呼ばれる関数を定義する
* 関数の定義はinput要素より前にある必要がある。
*/
function message(){
alert('クリックされたよ');
}
--></script>
<!--
input要素のonclick属性に関数名を指定する。
このとき、関数を呼び出すように()を付けておくことが重要。
-->
<input type='button' value='ここを押してね' onclick='message()'>
</body>
</html>
HTMLの要素にはid属性をつけることができる。 id属性をつけるとその要素をJavascriptから操作できる。
<!DOCTYPE HTML>
<html lang='ja_JP'>
<body>
<!--
id属性をつけたinput要素を出力する。
これをJavascriptで操作するためにJavascriptより前にすることが重要。
-->
<input type='button' id='button1' value='ここを押してね'>
<script type='text/javascript'><!--
/*
* HTMLの要素をJavascriptで操作する例
*/
// idがbutton1である要素(オブジェクト)を取得する。
var btn = document.getElementById('button1');
// 要素の値(valueプロパティ)を出力する。
document.write(btn.value);
--></script>
</body>
</html>
<!DOCTYPE HTML>
<html lang='ja_JP'>
<body>
<script type='text/javascript'><!--
/*
* クリックされたときに呼ばれる関数を定義する
* 関数の定義はinput要素より前にある必要がある。
*/
function changeValue(){
// idがinput1の要素の値を取得する
var value = document.getElementById('input1').value;
// idがbutton1の要素の値を変える。
document.getElementById('button1').value = value;
// 以下のように1行で書いてもよい。
// document.getElementById('button1').value = document.getElementById('input1').value;
}
--></script>
<!--
このinput要素はユーザーが入力した値を取得するために使う。
-->
<input id='input1' type='input' value='ここに文字をいれてね'>
<!--
このinput要素はユーザーがJavascriptを実行するために使う。
-->
<input id='button1' type='button' value='この文字が変わるよ' onclick='changeValue()'>
</body>
</html>
全てのテキストボックスにはid属性を付けておくこと。id属性はそのHTML内で重なってはいけない。
+ =追加したボタンにもid属性を付けておくこと。
+ =ボタンクリックで呼ばれる関数はそのボタンの前で定義しないといけないことを思い出すこと。
値が取得できているかどうかはalert関数を使うと簡単にチェックできる。
1つめにHello、2つめにWorldと入力されたとき、3つめのテキストボックスにHelloWorldと表示されるようにする。
1つめに2、2つめに3と入力されたとき、3つめのテキストボックスに5と表示されるようにする。 テキストボックスから取得した値は文字列になっているのでparseInt関数を用いる。
// parseInt関数の使い方 var input1 = '2'; // 文字としての2を変数にいれる var input2 = '3'; // 文字としての3を変数にいれる alert(input1 + input2); // ここでは文字列の結合が行われて23になる。 alert(parseInt(input1) + parseInt(input2)); // parseInt関数により文字列が整数になる。その結果5と表示される。
九九の表をJavascriptで作成せよ。 作成したJavascriptを含むHTMLファイルを提出すること。
| 1の段 | |
|---|---|
| 1の段 | 1 |
| 1の段 | 2の段 | 3の段 | 4の段 | 5の段 | 6の段 | 7の段 | 8の段 | 9の段 | |
|---|---|---|---|---|---|---|---|---|---|
| 1の段 | 1 |
| 1の段 | 2の段 | 3の段 | 4の段 | 5の段 | 6の段 | 7の段 | 8の段 | 9の段 | |
|---|---|---|---|---|---|---|---|---|---|
| 1の段 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1の段 | 2の段 | 3の段 | 4の段 | 5の段 | 6の段 | 7の段 | 8の段 | 9の段 | |
|---|---|---|---|---|---|---|---|---|---|
| 1の段 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 2の段 | 2 | 4 | 6 | 8 | 10 | 12 | 14 | 16 | 18 |
| 3の段 | 3 | 6 | 9 | 12 | 15 | 18 | 21 | 24 | 27 |
| 4の段 | 4 | 8 | 12 | 16 | 20 | 24 | 28 | 32 | 36 |
| 5の段 | 5 | 10 | 15 | 20 | 25 | 30 | 35 | 40 | 45 |
| 6の段 | 6 | 12 | 18 | 24 | 30 | 36 | 42 | 48 | 54 |
| 7の段 | 7 | 14 | 21 | 28 | 35 | 42 | 49 | 56 | 63 |
| 8の段 | 8 | 16 | 24 | 32 | 40 | 48 | 56 | 64 | 72 |
| 9の段 | 9 | 18 | 27 | 36 | 45 | 54 | 63 | 72 | 81 |
| 1の段 | 2の段 | 3の段 | 4の段 | 5の段 | 6の段 | 7の段 | 8の段 | 9の段 | |
|---|---|---|---|---|---|---|---|---|---|
| 1の段 | |||||||||
| 2の段 | |||||||||
| 3の段 | |||||||||
| 4の段 | |||||||||
| 5の段 | |||||||||
| 6の段 | |||||||||
| 7の段 | |||||||||
| 8の段 | |||||||||
| 9の段 |
| 1の段 | 2の段 | 3の段 | 4の段 | 5の段 | 6の段 | 7の段 | 8の段 | 9の段 | |
|---|---|---|---|---|---|---|---|---|---|
| 1の段 | |||||||||
| 2の段 | |||||||||
| 3の段 | |||||||||
| 4の段 | |||||||||
| 5の段 | |||||||||
| 6の段 | |||||||||
| 7の段 | |||||||||
| 8の段 | |||||||||
| 9の段 |