<html>
<head>
<script type="text/javascript">
function getElements()
  {
  var a = document.getElementById("attachbodyhidden");
  var  newnode = a.firstChild.cloneNode(true);
  var x=newnode.getElementsByTagName("input");
  alert(x.length);
  }
</script>
</head>
<body>
<form method="post" name="f">
<div id="attachbodyhidden">
 <div>
<input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
<input name="myInput" type="text" size="20" /><br />
</div>
</div>
<br />
<input type="button" onclick="getElements()"
value="How many input elements?" />
</form>
</body>
</html>
IE下可以正常打印长度。火狐下不可以?什么原因啊?百度也没百度出来。

解决方案 »

  1.   

    改成这样在试试<html>
    <head>
    <script type="text/javascript">
    function getElements()
      {
      var a = document.getElementById("attachbodyhidden");
      var  newnode = a.firstChild.cloneNode(true);
      var x=newnode.getElementsByTagName("input");
      alert(x.length);
      }
    </script>
    </head>
    <body>
    <form method="post" name="f">
    <div id="attachbodyhidden" name="attachbodyhidden">
     <div>
    <input name="myInput" type="text" size="20" /><br />
    <input name="myInput" type="text" size="20" /><br />
    <input name="myInput" type="text" size="20" /><br />
    </div>
    </div>
    <br />
    <input type="button" onclick="getElements()"
    value="How many input elements?" />
    </form>
    </body>
    </html>
      

  2.   

    function getElements()
      {
      var a = document.getElementById("attachbodyhidden");
      var x=a.getElementsByTagName("input");
      alert(x.length);
      }
      

  3.   

    谢谢2楼。但貌似不可以。你可以帮测试一下吗?
    3楼,你这样我知道可以获取,但我必须clone一组节点。所以代码意思不能改。
      

  4.   

    a.firstChild.cloneNode(true);
    你的是复制attachbodyhidden下的div,在IE下用firstChild能得到正确结果是因为attachbodyhidden的文本节点为空,IE就去取div。
    chrome和ff不管有没有文本节点,firstChild取到的都是文本节点。
    改成这样,IE也就取不到了。
    <div id="attachbodyhidden">
    123
    <div>
    <input name="myInput" type="text" size="20" /><br />
    <input name="myInput" type="text" size="20" /><br />
    <input name="myInput" type="text" size="20" /><br />
    </div>
    </div>
    可以这样弄。<!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>
    <script type="text/javascript">
    function getElements()
      {
      var a = document.getElementById("attachbodyhidden");
      var  newnode = a.getElementsByTagName("div")[0];
      var x=newnode.getElementsByTagName("input");
      alert(x.length);
      }
    </script>
    </head>
    <body>
    <form method="post" name="f">
    <div id="attachbodyhidden">
    123
    <div>
    <input name="myInput" type="text" size="20" /><br />
    <input name="myInput" type="text" size="20" /><br />
    <input name="myInput" type="text" size="20" /><br />
    </div>
    </div>
    <br />
    <input type="button" onclick="getElements()"
    value="How many input elements?" />
    </form>
    </body>
    </html>
      

  5.   

    想clone一组的话
    var  newnode = a.getElementsByTagName("div")[0];
    改成
    var  newnode = a.getElementsByTagName("div")[0].cloneNode(true);