getElementsByName と foms の違い(nameの要素番号指定) | ~/techlog/

getElementsByName と foms の違い(nameの要素番号指定)

document.forms[0].textname;
document.getElementsByName("textname");

の違いの話。




JavaScriptでHTML上のformにあるinputの値を取得する場合方法は


document.forms[0].textname;
document.getElementsByName("textname");


の2通り。ただし両者は当然違いがある。




たとえば・・・

<input type="text" name="textname" />
<input type="text" name="textname" />
<input type="text" name="textname" />

といった感じで、同じnameのinputが複数ある場合は


alert(document.forms[0].textname[0].value);
alert(document.getElementsByName("textname")[0].value);

といった形でelementのindexを指定してJavaScriptで値を取得する。



しかし・・・


<input type="text" name="textname" />

のように同じnameのinputが複数存在しない(1つだけ)の場合は



※この記述はエラーとなる

alert(document.forms[0].textname[0].value);

1つしか無い場合、elementのindex番号での指定ができない。



※こちらはエラーとならない

alert(document.forms[0].textname.value);
alert(document.getElementsByName("textname")[0].value);