2

计入什么标签form.elements

<html>
   <head>
      <title>
          form process
      </title>
      <script>
          function showelements()
          {
              var form = document.getElementById("f");
              var n = form.elements.length;
              alert(n);
          }
      </script>
   </head>
   <body>
         <form id="f" action="#" method="post">
            <p>Hello</p>
            <input type="text" />
            <input type="text" />
            <button onclick="showelements()">Click</button>
        </form>
   </body>
</html>

我认为n = 4因为有 4 个元素:p, input, input, button, 但结果n = 3.

4

2 回答 2

5

元素集合仅包含表单控件(输入、选择、按钮、文本区域和字段集)。

如果您想要表单中的所有元素,请使用frm.getElementsByTagName("*").

于 2013-06-17T18:23:11.550 回答
1

好吧,这次来自 W3C:http ://www.w3.org/TR/html5/forms.html#dom-form-elements

elementsIDL 属性必须返回一个[ HTMLFormControlsCollection...]

这是一个更全面的列表

  • button
  • fieldset
  • input
  • keygen
  • object
  • output
  • select
  • textarea

“为什么<input type="image" src="" />不计入?”

因为,历史原因...

[...]属性处于 图像按钮input状态的元素除外,由于历史原因,必须将其排除在此特定集合 [HTMLFormControlsCollection] 之外。type

于 2013-06-17T19:21:46.927 回答