HTMLCollectionオブジェクトからは、HTML要素にさまざまな方法でアクセスできます。このオブジェクトを返すHTMLDocumentのプロパティには、
のようなものがあります。これらのプロパティは、ドキュメント内のすべてのオブジェクトを返します。また、
の2つのメソッドも、その戻り値はHTMLCollectionです。
HTMLCollectionは配列のように振る舞いますが、配列ではないためArrayと同一には扱えません。 ECMAScript 2015以降ならば、Array.from()で変換することでArrayとして扱えます。
| メソッド | 機能 |
|---|---|
| item() | |
| namedItem() |
| 要素の指定方法 | 取得方法 |
|---|---|
| 子ノード内での位置 | Node item( index ) |
Node elements[ index ] |
|
| idかname属性の名前 | Node namedItem( 'elementName' ) |
Node elements[ 'elementName' ] |
|
Node elementName |
次の2つのコードは、同一のオブジェクトを参照します。
var object = document.form1.text1;
var object = document.forms[ 'form1' ].elements[ 'text1' ];
特に後者の方法は、id属性やname属性にJavaScriptの識別子として認められていない文字が使用されているときに有用です。このような文字としては、
があります。たとえば、
<form id="a-b"></form>
のようなHTMLは有効です。しかしこの要素にJavaScriptからアクセスするとき、
document.a-b;
とは記述できないため、
document.forms[ 'a-b' ];
とする必要があります。
左のテキストボックスへの入力を参照して、右のテキストボックスへコピーします。
<form name="form1">
<input type="text" name="text1" onkeyup="TextChanged()" />
<input type="text" name="text2" />
</form>
<script type="text/javascript">
function TextChanged()
{
var elements = document.forms.form1.elements;
elements.text2.value = elements.text1.value;
}
</script>