DOM Using getElementsByClassName
class名より、要素をオブジェクトとして抽出するメソッド。
引数として、親要素、ルート要素を指定できる。
getElementByIdの拡張といえるが、getElementsByClassName
とあるように、戻り値はArrayになる。
(getElementByIdの場合、該当する先頭要素のみが戻る)
サンプルコードは以下。
このメソッドで選択される要素の個数をカウントして、表示するもの。
<HTML> <HEAD> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META http-equiv="Content-Style-Type" content="text/css"> <TITLE>Ajax_Sampling</TITLE> <!-- #style で id=foo,barの全ての要素に適用する。 --> <style type="text/css"> /*margin and padding on body element can introduce errors in determining element position and are not recommended; we turn them off as a foundation for YUI CSS treatments. */ /* (訳) body部のマージンとパディングの設定は要素(element)の位置を決める のにエラーの原因となることが多いので非推奨。 YUIのCSSでは、これをともに0に設定するのを基本にしている */ body { margin:0; padding:0; } #foo { margin-bottom:1em; } </style> <!-- 読み込むjs --> <script type="text/javascript" src="scripts/yui/yahoo/yahoo-min.js" > </script> <script type="text/javascript" src="scripts/yui/dom/dom-min.js" > </script> <script type="text/javascript" src="scripts/yui/event/event-min.js" > </script> <script type="text/javascript"> init = function() { var getByClass = function(e) { // div要素下でclassnameとしてbarを持つ要素をobjectとして抽出(Array)。 alert('found: ' + YAHOO.util.Dom.getElementsByClassName('bar', 'div').length + ' elements'); }; YAHOO.util.Event.on('demo-run', 'click', getByClass); } </script> </HEAD> <BODY onload=init()> <!-- OK --> <div class="bar">div class="bar"</div> <!-- NG --> <div class="bar-baz">div class="bar-baz"</div> <!-- OK --> <div class="bar ">div class="bar "</div> <!-- OK --> <div class=" bar ">div class=" bar "</div> <!-- OK --> <div class="bar baz">div class=" bar baz"</div> <!-- NG --> <div class="bar2 baz">div class=" bar2 baz"</div> <!-- NG --> <div class="foo">div class="foo"</div> <!-- NG --> <div class="foo" id="bar">div class="foo" id="bar"</div> <!-- OK --> <div class="foo bar baz">div class="foo bar baz"</div> <!-- NG --> <p class="bar">p class="bar"</p> <button id="demo-run">実行</button> </BODY> </HTML>
画面は以下のようになる。