inでbuttonなどのオブジェクトを取得すると
getElementsByTagNameを使い、inでオブジェクトを取得すると
最初はundefinedになり、次が最初のオブジェクトになる。
そういうもんなんだろう、と別に調べもしなかったけど
---------body------------------- <button id=test-a>a</button> <button name=test-b>b</button> <button id=id-c name=name-c>c</button> <button class=class-e>e</button> -------script-------------------- var obj = document.getElementsByTagName('button'); var arr = []; for(var i in obj) arr.push(i); alert(arr.join('\n'));
上記の場合のiは、0から始まるString型の数字だと思っていたら
length test-a test-b name-c 3
最初はlength、次からオブジェクトのidかnameで
nameとidがある場合、nameが優先された。
idもnameもない場合はindex。
なので、最初のobj[i]はオブジェクトの数を取得できる。
iだけで、idかnameを取得できるとは知らなかった。