JavaScript 演習2 1 本日の内容 • • • • • • • • 演習問題1の解答例 前回の続き document.getElementById関数 演習問題4 イベント処理 基本的なフォーム テキストボックスの入力値の取得 演習問題5 演習問題1 • promptメソッドとdocument.writeメソッドを用 いて,ユーザから入力されたテキストと文字の 色に応じて,表示内容を変化させるJavaScript プログラムを書きなさい 3 演習問題1の解答例 解答例1:style属性の値をダブルクォートで囲む場合 var text = prompt("テキストを入力してください"); var textColor = prompt("文字の色を入力してください"); document.write('<h1 style="color: ' + textColor + ';">' + text + '</h1>'); 解答例2:style属性の値をシングルクォートで囲む場合 var text = prompt("テキストを入力してください"); var textColor = prompt("文字の色を入力してください"); document.write("<h1 style='color: " + textColor + ";'>" + text + '</h1>'); 解答例3:style属性の値をダブルクォートで囲む場合(エスケープを利用) var text = prompt("テキストを入力してください"); var textColor = prompt("文字の色を入力してください"); document.write("<h1 style=\"color: " + textColor + ";\">" + text + '</h1>'); 4 演習問題1でよくある誤り var text = prompt("テキストを入力してください"); var textColor = prompt("文字の色を入力してください"); document.write("<h1 style="color: textColor;">" + text + "</h1>"); 緑の文字列を書きだそうとしてしまう. JavaScript上の文字列とstyle属性値が混在している. var text = prompt("テキストを入力してください"); var textColor = prompt("文字の色を入力してください"); document.write('<h1 style="color: textColor;">' + text + "</h1>"); 「textColor」という色で出力することになる. textColor変数に格納された文字列に展開されない. 5 document.getElementById関数 • document.getElementById(引数) – 引数で指定した要素オブジェクトを得る • document.getElementById(引数).textContent – 引数で指定した要素オブジェクトのテキストを得る • document.getElementById(引数).innerHTML – 引数で指定した要素オブジェクトのHTMLを得る • document.getElementById(引数).style.CSSプ ロパティ – 引数で指定した要素オブジェクトのCSSプロパティを得る – CSSプロパティ名は,基本的には「ハイフン(-)」を除去し ,ハイフンの後の文字を大文字に変換したものを用いる 6 – 参考: http://codepunk.hardwar.org.uk/css2js.htm オブジェクトのイメージ <body> <body> <h1 <h1 id="id1“ id="id1">Hello</h1> style=‘color: red’>Hello, World</h1> </body> </body> document.getElementById(“id”) H1要素のオブジェクト 属性: 色 (style.color): black HTMLテキスト (innerHTML): Hello document.getElementById(“id”).style.color = ‘red’; document.getElementById(“id”).innerHTML = ‘Hello, World’; document.getElementById関数 ex14.html JavaScript function test() { var h1Value = document.getElementById("id1").innerHTML; alert(h1Value); document.getElementById("id1").innerHTML = prompt(''); var item1 = document.getElementById("item1").innerHTML; alert(item1); var item2 = document.getElementById("item2").innerHTML; alert(item2); var item1 = document.getElementById("item3").innerHTML; alert(item3); document.getElementById("divid").innerHTML = "テスト"; document.getElementById("divid").style.color = "red"; document.getElementById("divid").style.fontSize = "200%"; document.getElementById("divid").style.backgroundColor = "black"; } HTML onload=‘関数名’ <body onload='test()'> <h1 id="id1">document.getElementById関数</h1> ドキュメントが完全に 読み込まれた後に指 定した関数を呼び出す <ul> <li id="item1">項目1</li> <li id="item2">項目2</li> <li id="item3">項目3</li> </ul> <div id="divid"></div> </body> divは「division(区画)」の略 他の要素をまとめて,構造化する際に 用いられる JavaScriptで操作する対象になる 8 演習問題4 • div要素にid属性を指定し,JavaScriptプログラムによ りdiv要素のCSSプロパティを設定し,以下の正方形 を表示するプログラムを作成せよ <div style="position: absolute; top: 100px; left: 100px; width: 100px; height: 100px; background-color: lightgray; border: thick solid black; visibility: visible;"></div> JavaScript ヒント function showRect() { document.getElementById(“rect”).style.・・・・ document.getElementById(“rect”).style.backgroundColor = “lightgray”; } HTML <body onload=“showRect()”> <div id=“rect”></div> </body> 9 イベント処理 • 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 12 テキストボックスの入力値の取得 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> 演習問題5 • テキストボックスにクイズの正解番号入力し,idが ouputのdivタグに,正解か不正解かを出力する JavaScriptプログラムを作成せよ – クイズはHTMLとして記述すること – parseInt関数を利用して,文字列を数値に変換 – 余力があれば,数値かどうかのチェックも行うこと • isNaN(Not a Number)関数を利用すると,入力値が数値かどう かを判別可能 (数値でない場合にtrueを返す) 演習問題5(発展版) • さらに余力がある人は,回答ボタンの横のspan 要素に以下のメッセージを出力するようにしてみ てください – テキストボックスが空または1〜3の数値以外の場合 には「1〜3の数値を入力してください」 – テキストボックスが1〜3の数値の場合には「OK」 • ex15.htmlのonkeyupイベントハンドラを用いること • メッセージは上記のとおりでなくても良い
© Copyright 2024 ExpyDoc