JavaScript 演習3 山口研究室 後期博士課程3年 玉川 奨 (たまがわ すすむ) 居室:24-604 / 23-620 mail : [email protected] 1 演習問題3 • div要素にid属性を指定し,JavaScriptプログラムに よりdiv要素のCSSプロパティを設定し,以下の長方 形を表示するプログラムを作成せよ <div style="position:absolute; top:40; left:40; width:150; height:250; background-color:#0000FF; border: thick solid red; visibility: visible;"> </div> JavaScript ヒント function showRect() { document.getElementById(“rect”).style.・・・・ document.getElementById(“rect”).style.background Color = “#0000FF”; } HTML <body onload=“showRect()”> <div id=“rect”></div> 2 </body> 本日の内容 • • • • • • • • • イベント処理 基本的なフォーム テキストボックスの入力値の取得 配列 DOM(Document Object Model) ラジオボタンで選択された値の取得 リスト(コンボ)ボックスで選択された値の取得 チェックボックスで選択された値の取得 提出課題 イベント処理 • JavaScriptでは、ユーザからの入力があるとWebブラウザがイベントを 生成 – 例えば、キーボードを押したり、マウスを動かしたりクリックしたりするなど 様々な場面でイベントが発生する あるイベントが発生した際に、そのイベントに対するイベントハンドラを定 義しておけば、インタラクティブなページを作ることが可能 イベントハンドラ 発生契機 サポートするHTML要素 onblur 要素が入力フォーカスを失った時 <button>, <input>, <label>, <select>, <textarea>,<body> onchange 入力フォーカスが移された時と要素 <input>, <select>, <textarea> の値が変わった時 onclick マウスを一回クリックした時 大半の要素 onmouseover マウスが要素の上に移動した 大半の要素 onkeydown(up) ユーザが何かキーを押した フォーム要素と<body> onload ページが読み込まれた時 body要素と共によく用いられる 基本的なフォーム • テキスト – 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> テキストボックスの入力値の取得 • テキストボックス内に入力したデータを、 ボタンが押されたらdiv要素に出力 • ex15.html 6 テキストボックスの入力値の取得 JavaScript 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"); } } HTML <form> 文字を入力してください。 <br /> <input type="text" id="input“ onkeyup=“getValue()" /> <input type=“button” value=“値の確認" onclick=“checkValue()" /> </form> <div id="output"></div> 演習問題4 • テキストボックスを2つ作成し,入力値の加算 結果をdiv要素に出力せよ – parseFloat関数を利用すること – 余力があれば,数値かどうかのチェックも行うこと • isNaN(Not a Number)関数を利用すると,入力値が数 値かどうかを判別可能 (数値でない場合にtrueを返す) 演習問題4 • さらに余力がある人は,テキストボックスの横のdiv要素に 以下のメッセージを出力するようにしてみてください – テキストボックスが空の場合には「数値を入力してください」 – テキストボックスが数値以外の場合には「数値ではありません」 – テキストボックスが数値の場合には「OK」 • ex15.htmlのonkeyupイベントハンドラを用いること • メッセージは上記のとおりでなくても良い 配列 • 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 DOM(Document Object Model) • 文書のトップであるDocumentオブジェクトか ら下位の階層の構造を表すモデル 「JavaScript DOMリファレンス」 http://www.openspc2.org/JavaScript/JavaScript_DOM/ 11 DOM関数の例 • ex17.html • document.getElementById(id) – 引数に指定したidを持つDOMオブジェクトを返す • document.createElement(要素) – 引数で指定したHTML要素を作成する • オブジェクト.setAttribute(属性名, 値) – オブジェクトの属性に値をセットする • オブジェクト.appendChild(オブジェクト) – 指定したオブジェクトにオブジェクトを追加する DOM関数の例 JavaScript 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); } } HTML <div id="dom_test"></div> ラジオボタンで選択された値の取得 • ex18.html ラジオボタンで選択された値の取得 JavaScript 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; } } } HTML <form id="radio_form“ onclick=“getRadioValue()”> あなたの性別を教えて下さい.<br/> <input type=“radio” name= "性別" value="男" checked="checked" />男 <input type=“radio” name= "性別" value="女" />女 </form> <div id="output">男</div> 演習問題5 • ex18.htmlを元に,男を選択した場合には青 色マークを女を選択した場合には赤色マーク を出力するようにせよ – ヒント: <div id=“mark” style=“width: 15; height: 3; background-color: blue”> を <div id=“output”>男</div> の前に挿入 リスト(コンボ)ボックスで 選択された値の取得 • ex19.html リスト(コンボ)ボックスで 選択された値の取得 JavaScript 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; } HTML <form> <select id="select_element" name=“animal" size="4" onclick="getSelectValue()" multiple> <option value="ペンギン">ペンギン</option> <option value="トラ">トラ</option> コンボボックスに変更したい場合は, <option value="ライオン">ライオン</option> select要素のsize属性の値を1にし, <option value="アザラシ">アザラシ</option> multipleを削除すれば良い. </select> (multipleを付けるとリストボックスで </form> 複数項目を選択できるようになる.) <div id="output"></div> チェックボックスで 選択された値の取得 • ex20.html チェックボックスで 選択された値の取得 JavaScript 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; } HTML <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> 提出課題 21 課題1(基本) テキストボックスに幅と高さを入力し,背景色をラジオ ボタンから選択し,ボタンを押すと,div要素に入力した 値に応じた矩形が表示されるようにする ボタンを押すと 入力値に応じて 矩形が変化 課題1(発展) 発展課題(例) 余力がある人は,さらに,表示する 矩形の個数や枠の幅や色も指定 できるようにしてみましょう. 課題2 アンケート項目の内容を整形して画面に出力 必須 入力情報を画面に表示 1. テキストボックスとボタンを 用いて,div要素に入力内 容を整形して表示する 2. onclick以外のイベントハン ドラを最低1つは用いること 発展課題(例) 1. 入力値のチェック (空だったらアラートなど) 2. <table>タグを利用して出力 3. チェックボックスの活用 4. リストボックスの活用 自由課題 来年度のeビジネスソフトウェア論の 授業ページのデザインを考えてください レポート 締切 6月28日(金)23:59 までにメールを送信 メール宛先 To:[email protected] メールの件名 学籍番号_氏名_JS演習 学籍番号,アンダーバーは必ず半角でお願いします 添付すべきファイル wordファイル(レポート本文) 2~3枚程度,ファイル名「学籍番号_氏名_JS演習.doc」 課題1.html,課題2.html, (やった人は)自由課題.html JavaScriptとCSSを別ファイルにした場合には,それらのフ ァイルも添付すること レポート レポート本文に書くべき項目 動作確認行ったブラウザ(IE or Firefox) 作成したJavaScriptの解説 HTML,CSS,JavaScriptを書く上で工夫した点 感想 注意 課題1と2共に工夫をしなくても合格点は出ますが,工夫 がしてある場合には評価します 機能性・技術性・デザイン性・工夫した点を評価します CSS, JavaScriptはできれば別ファイルとして書く方が望 ましいです 問い合わせ先 • 第1研究室 24-604A • 第2研究室 23-620B E-mail: [email protected] 気軽にお越しください♪ 優しい山口研メンバーが待ってます。
© Copyright 2024 ExpyDoc