JavaScript中document.forms[0]与getElementByName区别


Posted in Javascript onJanuary 21, 2015

首先我们来看个示例:

<form name="buyerForm" method="post" action="/mysport/control/user/list.do">

<input type="checkbox" id="usernames" value="testtest" >testtest<br>

<input type="checkbox" name="usernames" value="testtest" >testtest<br>

<input type="text" id="usernames" value="testtest" >testtest<br>

</form>

document.forms[0]在HTML页面中有一个form表单或者多个form表单的时候,都是返回一个NodeList类型的form数组
document.forms[0].usernames,这里的usernames可以是id的值,也可以是name的值,在这里这两个属性是等价的。而且,不会区分组件是文本框,是单选框,还是复选框。

这时要区分两种情况

有一个input的id或者name为'usernames'的时候,document.forms[0].usernames返回的是具体的input组件,这时如果操作的话,就要按照具体的组件操作方法来使用。

此时,alert(document.forms[0].usernames.length)返回的是undefined,因为input组件没有length这个属性。
有两个或者两个以上input的id或者name为'usernames'的时候,document.forms[0].usernames返回的是NodeList数组,此时,
alert(document.forms[0].usernames.length)会返回数组的长度,上边的例子中,返回值是3
所以,当使用js进行全选的时候,要考虑同名复选框有一个和多个的情况

function allSelect(){

var form = document.forms[0];

var state = form.allselectbox.checked;

var length = form.usernames.length;//当有两个或者两个以上的复选框name为usernames的时候,返回的是数组的长度

//当有一个复选框name为usernames的时候,form.usernames返回的是复选框对象,而不是数组,所以其length属性是undefined

if(length){ //在javascript中,只要被判断的条件是0,null,或者undefined,均被认为是false,其他情况均认为是true

for(var i=0;i<length;i++){

form.usernames[i].checked=state;

}

}

else{

form.usernames.checked=state;

}

}

有一个组件id为'usernames'或者多个组件id为'usernames',document.getElementById('usernames')返回的值都是一个表单组件,当有多个组件id为'usernames',返回的是第一个id为'usernames'组件。
有一个组件name为'usernames'或者多个组件name为'usernames',document.getElementsByName()返回的都是HTMLCollection数组。注意与document.getElementsByTagName()的区别,后者是根据标签类别获取数组。
var names = document.getElementsByTagName("usernames"),alert(names[0])这里返回的结果是undefined,我原来把byName与byTagName弄混了,而没有标签是以usernames开始的,<usernames value=''></usernames>这是不存在的。
但是getElementsByTagName返回的依然是数组集合,其不含任何内容,names[0]不存在,所以返回的是undefined,因为超出数组范围的时候,弹出的都是undefined值。
var test = {'0','1','2',};alert(test[3]);返回的是undefined.

Javascript 相关文章推荐
有效的捕获JavaScript焦点的方法小结
Oct 08 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
Sep 14 Javascript
Javascript和HTML5利用canvas构建Web五子棋游戏实现算法
Jul 17 Javascript
node.js中的http.response.writeHead方法使用说明
Dec 14 Javascript
js进行表单验证实例分析
Feb 10 Javascript
javascript文件加载管理简单实现方法
Jul 25 Javascript
JavaScript语言精粹经典实例(整理篇)
Jun 07 Javascript
Bootstrap精简教程中秋大放送
Sep 15 Javascript
基于AngularJS实现表单验证功能
Jul 28 Javascript
JavaScript 中的 this 工作原理
Jun 20 Javascript
Node.js API详解之 util模块用法实例分析
May 09 Javascript
vue实现移动端项目多行文本溢出省略
Jul 29 Javascript
为JS扩展Array.prototype.indexOf引发的问题及解决办法
Jan 21 #Javascript
JavaScript的内存释放问题详解
Jan 21 #Javascript
script标签属性用type还是language
Jan 21 #Javascript
JS交换变量的方法
Jan 21 #Javascript
setinterval()与clearInterval()JS函数的调用方法
Jan 21 #Javascript
js实现DOM走马灯特效的方法
Jan 21 #Javascript
浅谈javascript 迭代方法
Jan 21 #Javascript
You might like
第二节 对象模型 [2]
2006/10/09 PHP
使用php显示搜索引擎来的关键词
2014/02/13 PHP
PHP实现的简单日历类
2014/11/29 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
PHP获取用户访问IP地址的5种方法
2016/05/16 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
JavaScript 常用函数
2009/12/30 Javascript
某页码显示的helper 少量调整,另附js版
2010/09/12 Javascript
IE与FireFox中的childNodes区别
2011/10/20 Javascript
jQuery EasyUI API 中文文档 - Dialog对话框
2011/11/15 Javascript
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
jquery选择符快速提取web表单数据示例
2014/03/27 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
前端js文件合并的三种方式推荐
2016/05/19 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
React Native使用fetch实现图片上传的示例代码
2018/03/07 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
vue项目动态设置页面title及是否缓存页面的问题
2018/11/08 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
微信小程序websocket实现即时聊天功能
2019/05/21 Javascript
JavaScript进制转换实现方法解析
2020/01/18 Javascript
Mac中升级Python2.7到Python3.5步骤详解
2017/04/27 Python
使用python绘制二维图形示例
2019/11/22 Python
Python tkinter常用操作代码实例
2020/01/03 Python
详解Python设计模式之策略模式
2020/06/15 Python
Python如何在单元测试中给对象打补丁
2020/08/03 Python
Python接口自动化测试的实现
2020/08/28 Python
快速实现一个简单的canvas迷宫游戏的示例
2018/07/04 HTML / CSS
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
彩色的非洲教学反思
2014/02/18 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
2014年驾驶员工作总结
2014/11/18 职场文书
商务代表岗位职责
2015/02/15 职场文书
公司安全管理制度范本
2015/08/05 职场文书
导游词之秦皇岛燕塞湖
2020/01/03 职场文书