[ウインドウ] – [情報]で情報パネルを表示して、表示単位をPixelにチェックすれば、情報パネル欄のx、y座標がピクセルで表示されます。
Head First Javascript 概要と使用した関数 7章から12章
7章
フォーム エラーチェックなど
フォームデータにアクセスする
< input id="zipcode" name="zipcode" type="text" size="5" onclick="showIt(this.form)" />
formオブジェクトはフォームにある全てのフィールドを配列として保持している。配列要素はname属性に設定された識別式を使って格納されている。
function showIt(theForm) {
alter( theForm.[“zipcode”].value );
}
フォームフィールドで発生するイベント
onfocus あるフィールドが選択された
onblur フィールドから入力カーソルがなくなった ==> データ検証に最適
onchenge フィールドから入力カーソルがなくなった+データが変更された (空フィールドを移動していってもイベントは発生しない)
8章
HTMLの内容を操作する
docuemnt.getElementById(“orange”)
document.getElementsByTagName(“img”)[3]
document.getElementById(“scenetext”).innerHTML = message; または “メッセージテキスト”
innerHTMLはdiv、span、pなどコンテンツのコンテナとして機能する要素のコンテンツを設定する
ノードプロパティによりDOMツリーのノードをたどる事が出来る
nodeValue、nodeType、childNodes、firstChild、lastChild
あるノードのテキストコンテンツはそのノードの子ノードに保持されている。
document.getElementByID(“story”).firstChild.nodeValue = “メッセージ”
しかし、子ノードは一つとは限らないので、ノードのコンテンツを変更する場合には
var node = document.getElementById(“story”);
While (node.firstChild)
node.removeChild(node.firstChild);
node.appendChild(document.createTextNode(“メッセージ”));
改行しないButtunを作るのに<div>ではなく、改行しないinline要素の<span>が適切
マウスのフォバー表示も出来る
ゲームスタート
Javascriptでは全ての要素はオブジェクトです。ある要素のHTMLコードの中ではthisというキーワードを使ってそのオブジェクトにアクセスできる。
空のButtonは消す
ノードのclassNameプロパティ 大きなスタイルの変更。CSSのチャンク
ノードのstyleプロパティ ちょっとしたスタイル変更。CSS要素単位
決定履歴
function changeScene(decision) { ・・・ // Update the decision history var history = document.getElementById("history"); if (curScene != 0) { // Add the latest decision to the history var decisionElem = document.createElement("p"); decisionElem.appendChild(document.createTextNode("Decision " + decision + " -> Scene " + curScene + " : " + message)); history.appendChild(decisionElem); } else { // Clear the decision history while (history.firstChild) history.removeChild(history.firstChild); } }
9章
バックグラウンドで起動中のアプリを完全に終了する
「ホームボタン」を2回素早く押し、マルチタスク画面を表示します。マルチタスク画面から、アプリ画面を上部にスワイプすることで、バックグラウンドで起動中のアプリを完全に終了することができます。
「iOS6」搭載のiPhoneの場合
「ホームボタン」を2回素早く押して、マルチタスク画面を表示します。マルチタスク画面内の任意のアプリアイコンをロングタップ(タッチし続ける)するとアイコンが揺れだすので、完全に終了したいアプリの「-」アイコンをタップすることで、バックグラウンドで起動中のアプリを終了できます。終了後は、再度「ホームボタン」を押して、マルチタスク画面を閉じます。
データの自己管理
iPad、iPhoneを一つのiTuneで管理していて困るのは、iPhoneとiPadで異なるライブラリ設定が簡単に行えないことです。
たとえばブックやムービーのライブラリに同期が設定されていると、ディバイスを接続した瞬間に自動同期が始まってしまい、iPhone用のライブラリ設定がiPadにも同期され、iPadのライブラリ設定が消えてしまいます。
したがってディバイスの接続前にiTuneのライブラリ設定を接続するディバイス用に設定しないと思いもかけずにライブラリの内容を失ってしまうことになります。フォルダーに対する同期の停止は同期が始まってからでも可能ですが、一瞬でも同期が始まればライブラリ設定の変更を完全にとめることは出来ません。自動設定は初期設定なのですが、関係する設定が二つあるので両方の設定を下記のように同時に変更する必要があります。
1.ディバイスの概要タブでの設定
ディバイスをコンピュターに接続し、iTuneを起動。iTuneにディバイスが表示されたら概要タブのオプションの中の<音楽とビデオを手動で管理>にチェックを入れます。
2.iTune側への設定
次にiTuneの[編集] – [設定]でディバイスタブを開き、<iPod、iPhone、およびiPadを自動的に同期しない>にチェックを入れます。
以上の二つの設定でディバイス内のコンテンツは自動同期されなくなり、これはJobs氏の好みには反するかもしれませんが、iTune内のライブラリ構成とは関係なくディバイス内の構成を決定する事が出来ます。
ディバイスへのコンテンツの追加には二つの方法があります。
1.ライブラリ経由でコンテンツをディバイスにロード(同期)する
ライブラリへのコンテンツへの導入は[ファイル] – [ファイルをライブラリに追加]からでももちろん出来ますが、コンピュータのフォルダーから希望のファイルを選択し、直接ライブラリの近くまでドラッグして、ドロップすればコンテンツの導入が始まります。
次に、ライブラリに追加されたコンテンツの中から希望のコンテンツを選び、ディバイスの表示されている付近までドラッグしドロップすればコンテンツの導入が始まります。
2.コンピュータのフォルダーから直接コンテンツを導入する
ライブラリの時と同じように、コンピュータのフォルダーから希望のファイルを選択し、直接ディバイスの近くまでドラッグして、ドロップします。
ディバイスに追加されたコンテンツは順次同期され、コンテンツの導入が行われます。
なお、ディバイスへのコンテンツの導入はライブラリ経由でも、コンピュータから直接でも任意に選べ、一方の方法で行った後、他の方法で行ってもかまいません。
閲覧中のブラウザのプラットフォームを表示する
iPhoneとかiPadというのはブラウザのプラットフォーム名。従ってnavigator.userAgentではなく、navigator.platformで取得する。
使用例:
alert(navigator.platform);
実例:
indexOf(str[, start])
対象の文字列の先頭から引数に指定した文字列を検索します。
パラメータ:
str 検索する文字列
start 検索を開始する位置
戻り値:
指定した文字列が含まれていた場合は最初に見つかった位置。見つからなかった場合は-1を返す。
使用例:
if ((navigator.platform.indexOf('iPhone') >= 0 || navigator.platform.indexOf('iPad') >= 0) || navigator.platform.indexOf('iPod') >= 0 || navigator.platform.indexOf('Android') >= 0) { window.location.href = './sp/sp_index.html'; }
ソースコードのEncode
各種のソースコードをhtmlソース内に記述する為には、事前に<や>、=を文字表記<や>、" にEncodeしておく必要があります。
そのためのWeb toolはここ使えば複数行を一気にEncodeする事が出来ます。
Head First Javascript 概要と使用した関数 1章から6章
1章
var userName = prompt(“あなたのお名前は?”);
alert(“はじめまして、” + userName + “さん、”);
document.getElementById(“rock.Img”).src = “../rock_happy.png”
onload
onclic
2章
キャメルケース
perseInt(“3ダース”) 実数を与えると整数部のみ返す
perseFloat(“$14.5”)
parseInt(document.getElementById(“cakedonuts”).value);
toFixed(2) total.toFix(2) 少数点以下2桁を四捨五入
isNaN()
3章 ブラウザを調べる
Javascriptで扱えるブラウザ機能 ブラウザウインドウの幅と高さ、アクセス履歴、タイマークッキー
扱えない機能 ブラウザウインドウの開閉
タイマー
setTimeout(“alert(‘起きて!’);”, 600 * 1000);
Var timerID = setInterval(“alert(”);”, 600 * 1000);
clearInterval(timerID); タイマーを停止する
setInterval(“location.reload();”, 15 * 1000); 定期的にページを更新
documentオブジェクト
document.body.clientHeight body.clientHeightはプロパティ
document.body.clientWidth body.clientWidthはプロパティ
document.getElementById(“XXXX”).style.height 要素のプロパティー
document.getElementById(“XXXX”).style.width
ブラウザは表示する内容を縦方向に詰める傾向があるので、クライアントウインドウの高さを元に画像表示のサイズは決定したほうが良い。
クッキー
userName = readCookie(“irock_username”);
writeCookie(“irock_username”, userName, 5 * 365);
eraseCookie(“irock_username”);
navigator.cookieEnabled
4章
if文
if (chosenCase == "A") openCase("A"); if (chosenCase == "A") openCase("A"); else { openCase("defoult"); doSomething(); } if (chosenCase == "A") openCase("A"); else if (chosenCase == "B") { openCase("B"); doSomething(); else openCase("defoult"); doSomethingelse(); }
コメント
//
/*
・・・
*/
変数の場所
関数の引数は既に初期化されたローカル変数と同じ様な動作になる
switch文
switch (curScene) { //評価できるのは式ではない case 0: curScene = 1; dosomething0(); break; case 1; if (decision == 1) { curScene = 2; dosomething1(); } else { curScene = 3; dosomething2(); } break; default: curScene = 0; dosomethingelse(); break; }
5章
ループ
for (var x=0; x<37; X++)
doSomething();
break;
continue;
var x = 10;
while( x>0 ) {
alert("Starting in.." + x );
x--;
}
var str = prompt("お名前を教えて下さい。","");
var accept = confirm("Is this Okey?");
配列
var showTime = new Array();
showTime[0] = "12:30";
Var showTime = [ "12:30", "2:45", "5:00", "7:15" ];
document.getElementById("seat" + i).src = "seat_avail.png";
var seats = new Arrey(new Arrey(9), new Arrey(9), new Arrey(9), new Arrey(9));
var seats = [[ false, true, ・・・, false ], [ ・・・ ], [ ・・・ ], [ false, true, ・・・, false ]];
alert(seats[1][3]);
6章
関数の引数は関数の外にある変数には影響しません。引数の値を変更しても関数呼び出し側ではその値を参照できません。
関数の値を返したい場合は戻り値として返します。
function tempIndicator() {
var rawTemp = readSensor();
var actualTemp = convertTemp(rawTemp);
return actualTemp;
return文は戻り値を返すか、特定の場所で関数を終わらせる為に使われる。
関数呼出と関数参照
function showSeatStatus(seatNum) {
alert();
}
var showSeatStatus = function(seatNum) {
alert();
}
コンテンツ(html)から機能(Js)の分離 – 関数参照を使ってイベントとつなぐ
<body onload="xxxxx();">を変更
window.onload = function() {
document.getElementById("findseats").onclick = findSeats;
//
document.getElementById("seat0").onclick = function(evt) {showSeatStatus(0);};
document.getElementById("seat1").onclick = function(evt) {showSeatStatus(1);};
・・・
//
initSeats();
}
7章
8章
9章
10章
11章
12章
Javascriptの役割
HTML 構造
CSS スタイル
JavaScript アクション
JavaScriptを使うと、ボタンのクリックやブラウザウインドウの大きさ変更、テキストフィールドへのデータ入力などウェッブページで起きることを検知する事が出来る。
フォルダー構造の簡易図作成
全角記号の「│」、「├」、「└」を使って構造を作り<pre>タグでくくる。
この時タグはdisplay:block;として下記のように記述すると、下図のような簡易図が表示できる。
<div> <pre style="line-height : 100%;padding : 10px 10px;border-width : 2px;border-style : solid;border-color : rgb(3, 3, 3);width : 300px;float : left;display : block;"> postmail │ postmail.html │ postmail.cgi │ check.cgi │ init.cgi ├ lib │ │ jcode.pm │ └ jcode │ | *.pm ├ data │ │ log.cgi │ │ ses.cgi └ data │ mail.text │ reply.txt │ conf.html │ thx.html │ err1.html │ err2.html </pre> </div>
postmail │ postmail.html │ postmail.cgi │ check.cgi │ init.cgi ├ lib │ │ jcode.pm │ └ jcode │ | *.pm ├ data │ │ log.cgi │ │ ses.cgi └ data │ mail.text │ reply.txt │ conf.html │ thx.html │ err1.html │ err2.html