日期:2014-05-16  浏览次数:20315 次

一个新手问题,关于对象属性的
本帖最后由 stneo1990 于 2012-12-08 14:53:17 编辑

<form name="frm1">
<input type="text" name="username" value="zhangsan" />
</form>
<form name="frm2">
<input type="text" name="username" value="lisi" />
</form>
<form name="frm3">
<input type="text" name="username" value="wangwu" />
</form>
<script>
var frm=document.forms[1];
var input=frm.username;
</script>


想问一下,为什么frm里面会有一个属性是"username"并且它的值是[object]?
然后为什么frm.username就是选定的那个<input>呢?不是应该是用frm.getElementsByName("username")才是选定那个input吗?
DOM这个地方没弄清楚~希望能稍微详细的讲解一下~万分感谢~!

------解决方案--------------------
frm.username得到input DOM对象,DOM类型就object

frm.getElementsByName("username")得到的是DOM数组,不是input对象,要获得input对象要通过下标获取,frm.getElementsByName("username")[0]
------解决方案--------------------
http://www.w3school.com.cn/htmldom/coll_form_elements.asp
Form 对象集合 elements[]  :包含表单中所有元素的数组。
elements 集合可返回包含表单中所有元素的数组。
元素在数组中出现的顺序和它们在表单的HTML 源代码中出现的顺序相同。
每个元素都有一个 type 属性,其字符串值说明了元素的类型。
语法
formObject.elements[].property
提示和注释
提示:如果 elements[] 数组具有名称(input 标签的 id 或 name 属性),那么该元素的名称就是 formObject 的一个属性,因此可以使用名称而不是数字来引用 input 对象。
举例,假设 x 是一个 form 对象,其中的一个 input 对象的名称是 fname,则可以使用 x.fname 来引用该对象。


var frm=document.forms[1];
var input=frm.username;// frm对象中input 对象的名称是 username