<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下可以正常打印长度。火狐下不可以?什么原因啊?百度也没百度出来。
<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>
{
var a = document.getElementById("attachbodyhidden");
var x=a.getElementsByTagName("input");
alert(x.length);
}
3楼,你这样我知道可以获取,但我必须clone一组节点。所以代码意思不能改。
你的是复制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>
var newnode = a.getElementsByTagName("div")[0];
改成
var newnode = a.getElementsByTagName("div")[0].cloneNode(true);