HTMLFormElement#elementsにはtype="image"のinput要素は含まれない
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>HTMLFormElement#elements Test</title> <form action="#" id="testForm"> <ul> <li><input type="text"></li> <li><input type="password"></li> <li><input type="checkbox" value="checkbox"></li> <li><input type="radio" value="radio"></li> <li><input type="submit"></li> <li><input type="reset"></li> <li><input type="file"></li> <li><input type="hidden"></li> <li><input type="image" src="button.png" alt="image"></li> <li><input type="button"></li> <li><button><img src="button.png"></button></li> <li><select><option>option</option></select></li> </ul> </form> <script type="text/javascript"> var form = document.getElementById('testForm'); console.log(form.elements); // type="image"のinput要素が含まれていない </script>
IE8、Firefox 3.6、Opera 10.6、Chrome 6、Safari 5で確認したけれどすべて同じ。
DOM Level 2 HTMLの仕様書にもそのような記述はないと思うんだけど……。
Document Object Model HTML
elements
of typeHTMLCollection
, readonly- Returns a collection of all form control elements in the form.
なぜだろう。
HTML5で明文化されていた。歴史的な理由か……。
with the exception of
http://www.w3.org/TR/html5/forms.html#dom-form-elementsinput
elements whosetype
attribute is in the Image Button state, which must, for historical reasons, be excluded from this particular collection.