2008年10月10日

MooToolsを30日でマスターするチュートリアルを試す!【2日目】

MootoolsTitle2.jpg

MooToolsマスターへの道2日目です。

1日目は以下のリンクからどうぞ↓
MooToolsを30日でマスターするチュートリアルを試す!【1日目】

それでは2日目頑張ります。
例によって英語に苦戦しています><

Mootools 1.2 Selectors

このチュートリアルでは、 HTMLの要素を選択するいくつかの方法を学んでいきます。
様々な意味で、Mootoolsを一般的に使用する基礎となります。
結局、HTML要素から対話的なユーザー・エクスペリエンスを作成するためには、まずそれらを手に入れなければなりません。


※今回はSelectorsのお話です。HTMLの要素を取得するいくつかの方法を学びます。


Selectorsの基礎

$();

$ functionはMooToolsの最も基本的なセレクタです。
これを使用する事でDOM要素のIDを取得できます。

//ID'body_wrap'を取得します 
$('body_wrap');
<div id="body_wrap">
</div>


※DOMとは
Webページの内容(文章、画像など)およびそれらの配置、スタイルをオブジェクトとして扱い、スクリプト言語を使って制御するための取り決め。
参考:DOMとは 【Document Object Model】 - IT用語辞典
ここではHTML要素的なニュアンスですね。


.getElement();

.getElement();は$ functionを拡張します。
例えば$ functionでID'body_wrap'を取得し、.getElement();で最初の子要素を取得できます。
ただし一つの要素を選択するだけであり、複数ある場合は一番目を返します。

.getElement();でクラス名を指定した場合、最初の一致するクラス要素を取得します。
複数の要素を選択するには、以下の.getElements();を見てください。

//ID'body_wrap'の中の最初の子要素を取得します。
$('body_wrap').getElement('a'); 
 
//ID'body_wrap'の中のID'special_anchor'を取得します。
$('body_wrap').getElement('#special_anchor'); 
 
//ID'body_wrap'の中のclass'special_anchor_class'を取得します。
$('body_wrap').getElement('.special_anchor_class');
<div id="body_wrap">
 <a href="#">最初のa要素</a>
 <a href="#">2回目のa要素</a>
 <a id="special_anchor" href="#">ID-special_anchor</a>
 <a class="special_anchor_class" href="#">クラス-special anchor</a>
 <a class="special_anchor_class" href="#">クラス-2回目のspecial anchor</a>
</div>


※大体コメントアウトの通りです。
折り返しが汚いので「プレーン表示」を押すと見やすいと思います。
どこが選択されている状態なのか分かりやすくする為にサンプルを作成しました。


$$();

$$();は複数のエレメントに素早くアクセスし、それらを配列に置く事が出来ます。
エレメントの名前(div, a, img等)やIDを選択出来ます。

//全てのdiv要素を選択
$$('div'); 
 
//IDが'id_name'の要素と全てのdiv要素を選択
$$('#id_name', 'div');
<div>ここはdiv要素</div>
<span id="id_name">こっちはspanでid="id_name"</span>
<span>ただのspan</span>


※これも同様にサンプルをご覧ください。
日本のサイトだと複数のエレメントにアクセスするでしっかり説明されています。
arrayは配列って認識してるんですが、どうなんでしょう。少し意味合いが違うのかも知れません。(現時点では不明)


.getElements();

.getElements();は.getElement();に似ています。基準に合う全ての要素を返し配列に置きます。
.getElements();は.getElement();の様に使用する事が出来ます。

//ID 'body_wrap'全てのa要素を全て選択
$('body_wrap').getElements('a'); 
 
//ID'body_wrap'の子要素の中からclass 'special_anchor_class'を全て選択
$('body_wrap').getElements('.special_anchor_class');
<div id="body_wrap">
 <a href="#">最初のa要素</a>
 <a href="#">2回目のa要素</a>
 <a id="special_anchor" href="#">ID-special_anchor</a>
 <a class="special_anchor_class" href="#">クラス-special anchor</a>
 <a class="special_anchor_class" href="#">クラス-2回目のspecial anchor</a>
</div>


※.getElements();を使用したサンプル
当たり前ですが、ちゃんと指定出来てます。こんな事で感動。


演算子で結果に含む、除く

Mootools 1.2ではいくつかの結果をより洗練する為の演算子をサポートしています。
.getElements();の中でそれらを使用する事が出来ます。
Mootoolsでは4つの演算子をサポートしていてinputのname属性を選択するのにそれぞれ使用できます。

※inputって書いてあるのですが、他のform系要素でも使えました。 現段階ではそういう認識で良いということなのかも知れません。
= : 等しい
//inputのnameが'phone_number'と等しい
$('body_wrap').getElements('input[name=phone_number]');
^= : ~始まる(前方一致)
//inputのnameが'phone'から始まる
$('body_wrap').getElements('input[name^=phone]');
$= : ~で終わる(後方一致)
//inputのnameが'number'で終わる
$('body_wrap').getElements('input[name$=number]');
!= : 等しくない
//inputのnameが'address'では無い
$('body_wrap').getElements('input[name!=address]');


<div id="body_wrap">
    <input name="address" type="text" />
    <input name="phone_number" type="text" /><!-- ←上の4つの例は全てこちらを選択します -->
</div>


※ここは演算子なんで比較的理解しやすかったです。
等しいの演算子が「=」なのが注意点でしょうか。


要素の順序を基にしたセレクタ

even

この簡単なセレクタを使用して、規則正しい要素を選んでください。
このセレクタが0から始まるので、最初の要素はevenです。

//全ての偶数のdivを選択
$$('div:even');
odd

evenを除いた全ての奇数の要素

//全ての奇数のdivを選択
$$('div:odd');


evenとoddを使用したサンプル
これを使うとテープルのセルの色分けとかが簡単に行えます。


.getParent();

親要素を取得する事が出来ます。

//ID 'child_id'の親要素を取得します。
$('child_id').getParent();
<div id="parent_id"> <!-- この要素が選択されます -->
    <div id="child_id">Even</div>
</div>


親要素のID名をalertで出力してみました!


2日目の感想

2日目は実際にいくつかサンプルを書いてみました!
やっぱり動くと面白い。

難易度が上がってきていますので解釈が間違っている部分があるかも知れません。
何かあった場合はご指摘ください。

ちなみに本屋さんに行ってWebクリエイティブのためのDOM Scripting[to-R]で紹介されている本を見つけたので購入しました。
なかなか楽しく読めています。オススメです。


3日目も2~3日以内にUP出来ればと思っています。

続きリリースしました!

MooToolsを30日でマスターするチュートリアルを試す!【3日目】


Posted by ; k. 2008年10月10日 10:21

このエントリーのタグ

トラックバック

このエントリーのトラックバックURL:

コメント

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)

太字 イタリック アンダーライン ハイパーリンク 引用