为什么不用:document.getElementsByTagName("input")

解决方案 »

  1.   

    try:
    ------------------------------------------------
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>Untitled Document</title>
    </head><body>
    <form name="bbb">
    <input type="text" name="item1" />
    </form>
    <script type="text/ecmascript">
    alert(document.forms["bbb"].getElementsByTagName("input").length);
    </script>
    </body>
    </html>
      

  2.   

    上面滴解释太草率了,
    仔细查了一下,document.bbb.elements 会按顺序返回 form 中全部控件(input type=image 除外),
    接下来就是对 document.bbb.elements[ctrlName] 探查了,确实很有意思,
    如果存在与 ctrlName 的同名控件,此时返回滴是集合(相当于 document.getElementsByName(ctrlName)),因此存在 length 属性;
    如果仅有一个 ctrlName 控件,此时返回地就是该控件(相当于 document.getElementById(ctrlName)),当然也就没有 length 属性了。当然,控件名中可以使用方括号,但强烈建议不要用!
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     <head>
      <title> new document </title>
      <meta name="generator" content="editplus" />
      <meta name="author" content="" />
      <meta name="keywords" content="" />
      <meta name="description" content="" />
     </head> <body>
    <form name="bbb"> 
    <input type="text" name="aaa"> 
    <input type="text" name="aaa"> 
    <input type="text" name="bbb"> 
    </form> 
    <a href="javascript:alert(document.bbb.elements['aaa'].length);">aaa</a> // 相当于 document.getElementsByName("aaa");
    <a href="javascript:alert(document.bbb.elements['bbb'].name);">bbb</a> // 相当于 document.getElementById("bbb");
     </body>
    </html>