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中的几个运算符
Jun 29 Javascript
js parsefloat parseint 转换函数
Jan 21 Javascript
将中国标准时间转换成标准格式的代码
Mar 20 Javascript
javascript动态判断html元素并执行不同的操作
Jun 16 Javascript
js数值计算时使用parseInt进行数据类型转换(jquery)
Oct 07 Javascript
JavaScript仿支付宝6位数字密码输入框
Dec 29 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
Mar 08 Javascript
使用JavaScript实现一个小程序之99乘法表
Sep 21 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
详解VUE Element-UI多级菜单动态渲染的组件
Apr 25 Javascript
vue ajax 拦截原理与实现方法示例
Nov 29 Javascript
一行JavaScript代码如何实现瀑布流布局
Dec 11 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
Yii全局函数用法示例
2017/01/22 PHP
php学习笔记之mb_strstr的基本使用
2018/02/03 PHP
php命令行写shell实例详解
2018/07/19 PHP
TP5框架实现上传多张图片的方法分析
2020/03/29 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
NodeJS学习笔记之FS文件模块
2015/01/13 NodeJs
jQuery中(function($){})(jQuery)详解
2015/07/15 Javascript
解决js函数闭包内存泄露问题的办法
2016/01/25 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
2017/08/14 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
vue组件是如何解析及渲染的?
2021/01/13 Vue.js
[04:52]第二届DOTA2亚洲邀请赛主赛事第一天比赛集锦:OG娜迦海妖放大配合谜团大中3人
2017/04/02 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Python中的True,False条件判断实例分析
2015/01/12 Python
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
python和shell获取文本内容的方法
2018/06/05 Python
Python、 Pycharm、Django安装详细教程(图文)
2019/04/12 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
Django Rest framework解析器和渲染器详解
2019/07/25 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
Python关键字及可变参数*args,**kw原理解析
2020/04/04 Python
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
CSS3利用text-shadow属性实现多种效果的文字样式展现方法
2016/08/25 HTML / CSS
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
Shopee马来西亚:随拍即卖,最佳行动电商拍卖平台
2017/06/05 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
介绍一下.net和Java的特点和区别
2012/09/26 面试题
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
外贸主管求职简历的自我评价
2013/10/23 职场文书
英文简历中的自荐信范文
2013/12/14 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
Win11任务栏太宽了怎么办?一招解决Win11任务栏太宽问题
2021/11/21 数码科技