--- title: Document.getElementsByClassName() slug: Web/API/Document/getElementsByClassName tags: - API - DOM - DOM Element Methods - Element - HTML5 - Method - Reference - メソッド translation_of: Web/API/Document/getElementsByClassName ---
{{domxref("Document")}} インターフェイスの getElementsByClassName メソッドは、指定されたクラス名をすべて持つすべての子要素の配列風オブジェクトを返します。 {{domxref("document")}} オブジェクトに対して呼び出したときは、ルートノードを含む文書全体が検索されます。任意の要素に対して {{domxref("Element.getElementsByClassName", "getElementsByClassName()")}} を呼び出すこともできます。その場合は、指定されたルート要素下の指定されたクラス名を持つ要素だけを返します。
var elements = document.getElementsByClassName(names); // または var elements = rootElement.getElementsByClassName(names);
'test' クラスを持つすべての要素を取得します。
document.getElementsByClassName('test')
'red' および 'test' クラスを両方持つすべての要素を取得します。
document.getElementsByClassName('red test')
'main' という ID を持った要素の中にある、 'text' クラスを持つすべての要素を取得します。
document.getElementById('main').getElementsByClassName('test')
'test' クラスを持つ最初の要素を取得し、一致する要素がなければ undefined になります。
document.getElementsByClassName('test')[0]
メソッドの this 値として {{domxref("HTMLCollection")}} を渡すことで、 Array プロトタイプのメソッドを HTMLCollection で使用することができます。ここでは、 'test' クラスを持つすべての div 要素を検索します。
var testElements = document.getElementsByClassName('test');
var testDivs = Array.prototype.filter.call(testElements, function(testElement){
return testElement.nodeName === 'DIV';
});
これは最もよく使われる操作のメソッドです。
<html>
<body>
<div id="parent-id">
<p>hello world 1</p>
<p class="test">hello world 2</p>
<p>hello world 3</p>
<p>hello world 4</p>
</div>
<script>
var parentDOM = document.getElementById("parent-id");
var test = parentDOM.getElementsByClassName("test"); // 一致する要素のリストであり、要素自身では*ない*
console.log(test); //HTMLCollection[1]
var testTarget = parentDOM.getElementsByClassName("test")[0]; // 求める最初の要素
console.log(testTarget); //<p class="test">hello world 2</p>
</script>
</body>
</html>
document.getElementsByClassName は document.querySelector や document.querySelectorAll ととても似た動きをします。指定されたクラス名がすべてある要素のみが選択されます。
<span class="orange fruit">Orange Fruit</span> <span class="orange juice">Orange Juice</span> <span class="apple juice">Apple Juice</span> <span class="foo bar">Something Random</span> <textarea id="resultArea" style="width:98%;height:7em"></textarea>
// getElementsByClassName は指定された両方のクラスを持つ要素のみを選択する
var allOrangeJuiceByClass = document.getElementsByClassName('orange juice');
var result = "document.getElementsByClassName('orange juice')";
for (var i=0, len=allOrangeJuiceByClass.length|0; i<len; i=i+1|0) {
result += "\n " + allOrangeJuiceByClass[i].textContent;
}
// querySelector は完全一致で選択する
var allOrangeJuiceQuery = document.querySelectorAll('.orange.juice');
result += "\n\ndocument.querySelectorAll('.orange.juice')";
for (var i=0, len=allOrangeJuiceQuery.length|0; i<len; i=i+1|0) {
result += "\n " + allOrangeJuiceQuery[i].textContent;
}
document.getElementById("resultArea").value = result;
{{EmbedLiveSample('Multiple_Classes_Example', '100%', 200)}}
| 仕様書 | 状態 | 備考 |
|---|---|---|
| {{SpecName('DOM WHATWG', '#dom-document-getelementsbyclassname', 'document.getElementsByClassName')}} | {{Spec2('DOM WHATWG')}} |
{{Compat("api.Document.getElementsByClassName")}}