个人由form对象的一些理解所引发的猜想和论证

来源:互联网 发布:普通disco 动作数据 编辑:程序博客网 时间:2024/06/05 12:37
Form 表单对象
--用法
----document.forms[] 是一个数组,包含了文档中所有的表单()。要引用单个表单,可以用 document.forms[x],但是一般来说,人们都会这样做:在标记中加上“name="..."”属性,那么直接用“document.<表单名>”就可以引用了。

经测试通过length属性能返回一个长度,说明其是一个节点对象,采用对象(点)表单元素name属性值就可以获得其元素的引用(如input)
经上述引发以下思考:其它含有包含关系的节点对象是否也可以采用对象点name属性值的方式获取下一级节点对象呢?
经测试table表格元素(因为其也可以返回一个集合)发现是可以的。

于是查询api发现form和table对象都可以返回集合

<head><script type="text/javascript">function cell()  {  var x=document.getElementById('myTable').rows[1].cells;  alert(x.aaa);  }</script></head><body><table id="myTable" border="1"><tr><td name="ss">cell 1</td><td name="ewr">cell 2</td></tr><tr><td name="aaa">cell 3</td><td>cell 4</td></tr></table><br /><input type="button" onclick="cell()" value="显示第一个单元"></body> 


对于不是返回集合的元素测试结果返回的是undefined
以下是个人猜想
1.只要返回对象数组或集合的元素,就可以采用对象点name属性值的方式获取其子元素的对象引用
为了验证猜想,我让不是返回集合的节点对象返回集合代码如下:
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>无标题文档</title><script language="javascript">function Xxx(f){//此句f.children表示获取作为当前对象的直接子后代对象的集合 alert(f.children.p);}</script><style>a{display:block;border:solid #F00;width:200px;height:200px;margin:100px;}</style></head><body><a name="haha" href="http://www.baidu.com" onMouseMove="Xxx(this)"><p name="p">这是一个链接</p></a></body></html> 


经alert弹出结果正确,同意可以采用对象点子元素name属性值的方法获取对象引用。
特别说明:
children获取的是直接子对象的集合,当p标签中再嵌套一层标签,比如span标签返回结果是undefined
<p name="p"><span name="s">这是一个链接</span></p>
此时alert(f.children.s)弹出undefined 
若想获得,请这么写f.children[0].children.s依此类推 
不过form对象可以跨层取 
0 0