javascript  演習3

28
JavaScript 演演1 演演演演演 演演演演演演 3 演 演演 ( 演演演演 演演演 ) 演演24 604 / 23 620 mail : [email protected]

Upload: elden

Post on 11-Jan-2016

56 views

Category:

Documents


0 download

DESCRIPTION

JavaScript  演習3. 山口研究室 後期博士課程 3 年 玉川 奨 ( たまがわ すすむ ) 居室: 24 - 604 / 23 - 620 mail : [email protected]. 演習問題 3. div 要素に id 属性を指定し, JavaScript プログラムにより div 要素の CSS プロパティを設定し,以下の長方形を表示するプログラムを作成せよ.

TRANSCRIPT

Page 1: JavaScript  演習3

JavaScript  演習3

1

山口研究室 後期博士課程 3 年玉川 奨 ( たまがわ すすむ )居室: 24 - 604 / 23 - 620mail : [email protected]

Page 2: JavaScript  演習3

演習問題 3• div 要素に id 属性を指定し, JavaScript プログ

ラムにより div 要素の CSS プロパティを設定し,以下の長方形を表示するプログラムを作成せよ

2

<div style="position:absolute; top:40; left:40;width:150; height:250; background-color:#0000FF;border: thick solid red;visibility: visible;">

</div>

<body onload=“showRect()”> <div id=“rect”></div></body>

function showRect() {document.getElementById(“rect”).style. ・・・・

document.getElementById(“rect”).style.backgroundColor = “#0000FF”;}

JavaScript

HTML

ヒント

Page 3: JavaScript  演習3

本日の内容• イベント処理• 基本的なフォーム• テキストボックスの入力値の取得• 配列• DOM ( Document Object Model )• ラジオボタンで選択された値の取得• リスト(コンボ)ボックスで選択された値の取得• チェックボックスで選択された値の取得• 提出課題

Page 4: JavaScript  演習3

イベント処理• JavaScript では、ユーザからの入力があると Web ブラウザがイベ

ントを生成– 例えば、キーボードを押したり、マウスを動かしたりクリックしたり

するなど様々な場面でイベントが発生する  あるイベントが発生した際に、そのイベントに対するイベントハ

ンドラを定義しておけば、インタラクティブなページを作ることが可能

イベントハンドラ

発生契機 サポートする HTML 要素

onblur 要素が入力フォーカスを失った時

<button>, <input>, <label>, <select>, <textarea>,<body>

onchange 入力フォーカスが移された時と要素の値が変わった時

<input>, <select>, <textarea>

onclick マウスを一回クリックした時 大半の要素

onmouseover マウスが要素の上に移動した 大半の要素

onkeydown(up) ユーザが何かキーを押した フォーム要素と <body>

onload ページが読み込まれた時 body 要素と共によく用いられる

Page 5: JavaScript  演習3

基本的なフォーム• テキスト

– input 要素の type 属性が text

• ラジオボタン– input 要素の type 属性が radio– name 属性の値を共通にすることでグループ化できる– value 属性で値を指定

• メニュー(リストボックスとコンボボックス)– select 要素と option 要素– select 要素の size 属性の値が 1 の場合

にはコンボボックス, 2 以上の場合にはリストボックス

– option 要素の value 属性で値を指定• チェックボックス

– input 要素の type 属性が checkbox– value 属性で値を指定

• テキストエリア– textarea 要素– rows 属性で行数, cols 属性で列数を表す

• ボタン– input 要素の type 属性が button (または, submit, reset

<form>   <input type=“”>XXX   <select>     <option> ~   </select>  <textarea></textarea></form>

Page 6: JavaScript  演習3

テキストボックスの入力値の取得

• テキストボックス内に入力したデータを、ボタンが押されたら div 要素に出力

• ex15.html

6

Page 7: JavaScript  演習3

テキストボックスの入力値の取得

<form>文字を入力してください。 <br /> <input type="text" id="input“ onkeyup=“getValue()" /> <input type=“button” value=“ 値の確認 " onclick=“checkValue()" /></form><div id="output"></div>

function getValue() { var text = document.getElementById("input").value; document.getElementById("output").innerHTML = text;}function checkValue() { var text = document.getElementById("input").value; if (text == "") { alert(" 文字を入力してください. "); } else { alert("OK"); }}

JavaScript

HTML

Page 8: JavaScript  演習3

演習問題4• テキストボックスを2つ作成し,入力値の加算結果を div 要素に出力

せよ– parseFloat 関数を利用すること– 余力があれば,数値かどうかのチェックも行うこと

• isNaN ( Not a Number)関数を利用すると,入力値が数値かどうかを判別可能 ( 数値でない場合に true を返す)

Page 9: JavaScript  演習3

演習問題4• さらに余力がある人は,テキストボックスの横の div 要素に以

下のメッセージを出力するようにしてみてください– テキストボックスが空の場合には「数値を入力してください」– テキストボックスが数値以外の場合には「数値ではありません」– テキストボックスが数値の場合には「OK」

• ex15.html の onkeyup イベントハンドラを用いること• メッセージは上記のとおりでなくても良い

Page 10: JavaScript  演習3

配列• ex16.html• 配列の生成

var a = new Array();a[0] = 1.2;a[1] = "JavaScript";a[2] = true;a[3] = {x:1, y:3};

var a =[1.2, "JavaScript", true, {x:1, y:3}];

• 配列のサイズを指定するときはvar a = new Array(10);

オブジェクトの型が異なっても格納することができる

• 連想配列a[score] = "88 点 ";

配列の添字を文字列にすることができる 10

Page 11: JavaScript  演習3

DOM ( Document Object Model )

• 文書のトップである Document オブジェクトから下位の階層の構造を表すモデル

「 JavaScript DOM リファレンス」http://www.openspc2.org/JavaScript/JavaScript_DOM/ 11

Page 12: JavaScript  演習3

DOM 関数の例

• ex17.html• document.getElementById(id)

– 引数に指定した id を持つ DOM オブジェクトを返す• document.createElement( 要素 )

– 引数で指定した HTML 要素を作成する• オブジェクト .setAttribute( 属性名 , 値 )

– オブジェクトの属性に値をセットする• オブジェクト .appendChild( オブジェクト )

– 指定したオブジェクトにオブジェクトを追加する

Page 13: JavaScript  演習3

DOM 関数の例

<div id="dom_test"></div>

function domTest() { var divObj = document.getElementById("dom_test");

var h1Obj = document.createElement("h1"); h1Obj.setAttribute("style", "color: navy;"); h1Obj.innerHTML = "Hello, World!"; divObj.appendChild(h1Obj);

var colorArray = ["red", "blue", "green", "yellow"]; for (var i = 0; i < colorArray.length; i++) { var pObj = document.createElement("p"); pObj.innerHTML = "DOM を用いて追加された段落 " + i; pObj.style.fontSize = "200%"; pObj.style.color = colorArray[i]; divObj.appendChild(pObj); }}

JavaScript

HTML

Page 14: JavaScript  演習3

ラジオボタンで選択された値の取得

• ex18.html

Page 15: JavaScript  演習3

ラジオボタンで選択された値の取得

<form id="radio_form“ onclick=“getRadioValue()”>あなたの性別を教えて下さい. <br/> <input type=“radio” name= " 性別 " value=" 男 " checked="checked" /> 男 <input type=“radio” name= " 性別 " value=" 女 " /> 女</form><div id="output"> 男 </div>

function getRadioValue(){ var radioForm = document.getElementById("radio_form"); for (var i = 0; i < radioForm.length; i++) { var radioButton = radioForm.elements[i]; if (radioButton.checked) { document.getElementById("output").innerHTML = radioButton.value; break; } }}

JavaScript

HTML

Page 16: JavaScript  演習3

演習問題5• ex18.html を元に,男を選択した場合には

青色マークを女を選択した場合には赤色マークを出力するようにせよ– ヒント:

<div id=“mark” style=“width: 15; height: 3; background-color: blue”>を<div id=“output”> 男 </div>の前に挿入

Page 17: JavaScript  演習3

リスト(コンボ)ボックスで選択された値の取得

• ex19.html

Page 18: JavaScript  演習3

リスト(コンボ)ボックスで選択された値の取得

<form> <select id="select_element" name=“animal" size="4" onclick="getSelectValue()" multiple> <option value=" ペンギン "> ペンギン </option> <option value=" トラ "> トラ </option> <option value=" ライオン "> ライオン </option> <option value=" アザラシ "> アザラシ </option> </select></form><div id="output"></div>

function getSelectValue(){ var html = "<ul>"; var selectElement = document.getElementById("select_element"); for (var i = 0; i < selectElement.length; i++) { var item = selectElement.options[i]; if (item.selected) { html += "<li>" + item.value + "</li>"; } } html += "</ul>"; document.getElementById("output").innerHTML = html;}

JavaScript

HTML

コンボボックスに変更したい場合は, select 要素の size 属性の値を 1 にし, multiple を削除すれば良い.( multiple を付けるとリストボックスで複数項目を選択できるようになる.)

Page 19: JavaScript  演習3

チェックボックスで選択された値の取得

• ex20.html

Page 20: JavaScript  演習3

チェックボックスで選択された値の取得

<form id="checkbox_form" name="animal" onclick="getCheckBoxValue()"> <input type="checkbox" value=" ペンギン " /> ペンギン <input type="checkbox" value=" トラ " /> トラ <input type="checkbox" value=" ライオン " /> ライオン <input type="checkbox" value=" アザラシ " /> アザラシ</form><div id="output"></div>

function getCheckBoxValue(){ var html = "<ul>"; var checkboxForm = document.getElementById("checkbox_form"); for (var i = 0; i < checkboxForm.length; i++) { var checkbox = checkboxForm.elements[i]; if (checkbox.checked) { html += "<li>" + checkbox.value + "</li>"; } } html += "</ul>"; document.getElementById("output").innerHTML = html;}

JavaScript

HTML

Page 21: JavaScript  演習3

提出課題

21

Page 22: JavaScript  演習3

課題1(基本)テキストボックスに幅と高さを入力し,背景色をラジオボタンから選択し,ボタンを押すと, div要素に入力した値に応じた矩形が表示されるようにする

ボタンを押すと

入力値に応じて矩形が変化

Page 23: JavaScript  演習3

課題1(発展)発展課題(例)

余力がある人は,さらに,表示する矩形の個数や枠の幅や色も指定できるようにしてみましょう.

Page 24: JavaScript  演習3

課題2アンケート項目の内容を整形して画面に

出力

1. 入力値のチェック (空だったらアラートなど

)2. <table> タグを利用して出力3. チェックボックスの活用4. リストボックスの活用

発展課題(例)

入力情報を画面に表示

必須1. テキストボックスとボタ

ンを用いて, div 要素に入力内容を整形して表示する

2. onclick 以外のイベントハンドラを最低1つは用いること

Page 25: JavaScript  演習3

自由課題

来年度の eビジネスソフトウェア論の授業ページのデザインを考えてください

Page 26: JavaScript  演習3

レポート締切

6月 28 日(金) 23:59 までにメールを送信メール宛先

To : [email protected]メールの件名

学籍番号 _氏名 _JS 演習 学籍番号,アンダーバーは必ず半角でお願いします

添付すべきファイルword ファイル ( レポート本文 ) 2~3枚程度,ファイル名「学籍番号 _氏名 _JS 演習 .doc 」課題 1.html ,課題 2.html, (やった人は )自由課題 .htmlJavaScript と CSS を別ファイルにした場合には,それらの

ファイルも添付すること

Page 27: JavaScript  演習3

レポートレポート本文に書くべき項目

動作確認行ったブラウザ (IE or Firefox)作成した JavaScript の解説HTML , CSS , JavaScript を書く上で工夫し

た点感想

注意課題1と2共に工夫をしなくても合格点は出ますが,工夫がしてある場合には評価します

機能性・技術性・デザイン性・工夫した点を評価しますCSS, JavaScript はできれば別ファイルとして書く方

が望ましいです

Page 28: JavaScript  演習3

問い合わせ先• 第1研究室 24-604A • 第2研究室 23-620B

気軽にお越しください♪優しい山口研メンバーが待ってます。

E-mail:  [email protected]