<html>
<head>
<script>
var get_name = function(){
var editform = document.getElementsByName('editform');
alert(editform.length);
}
var get_id = function(){
var editform = document.getElementById('editform');
alert(editform.length);
}
</script>
</head>
<body>
<form id="editform" name="editform" method="post" enctype="multipart/form-data">
<input type="input" name="aaa" value="1">
<input type="input" name="bbb" value="2">
<input type="input" name="ccc" value="3">
<input type="button" onclick="return get_name()" value="name">
<input type="button" onclick="return get_id()" value="id">
</form>
</body>
</html>
为什么我的get_name返回的是1呢,而get_id返回的是5,5应该是正常的,那就是说getElementsByName返回的不是form这个对象?如果是form对象,那应该length=5?
我的问题是,为什么getElementsByName不是返回的form对象,那这个返回的是什么?

解决方案 »

  1.   

    第一个放回的是form的数组,只有一个form所以长度是1第二个获取了form的对象,返回的应该是他的表单元素的个数
      

  2.   

    Retrieves a collection of objects based on the value of the NAME attribute返回的是一个集合。
      

  3.   

    第一个返回的是所有Name为"editform"的dom元素,是一个是数组,所以长度是1.第二个返回的是第一个ID为editform的dom元素,非数组,其length是其子元素的个数,所以是5.
      

  4.   

    用ID的方式获取,仍然是直接获取的form,同时返回其子对象。
    如var myform = document.getElementById("..");
    myfrom同用name方式获取的对象相同。
    myform[index]可以方便调用子对象。二者不影响。
      

  5.   

    在aptana里面 输入myform.后面自动会有属性方法列表,就可以看出都是数组的方法了。getElementsByName一般做遍历用,getElementByName才是找到某个特定dom。
      

  6.   

    getElementsByName返回得是数组。