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 相关文章推荐
JQuery 学习笔记 选择器之一
Jul 23 Javascript
固定背景实现的背景滚动特效示例分享
May 19 Javascript
jQuery中prop()方法用法实例
Jan 05 Javascript
js控制页面的全屏展示和退出全屏显示的方法
Mar 10 Javascript
解析Node.js基于模块和包的代码部署方式
Feb 16 Javascript
jquery基础知识第一讲之认识jquery
Mar 17 Javascript
jQuery获取同级元素的简单代码
Jul 09 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
Oct 10 Javascript
百度搜索框智能提示案例jsonp
Nov 28 Javascript
JavaScript学习笔记之函数记忆
Sep 06 Javascript
关于jquery layui弹出层的使用方法
Apr 21 jQuery
基于Taro的微信小程序模板消息-获取formId功能模块封装实践
Jul 15 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
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
PHP连接MSSQL方法汇总
2016/02/05 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
PHP使用正则表达式实现过滤非法字符串功能示例
2018/06/04 PHP
JavaScript继承方式实例
2010/10/29 Javascript
2010年最佳jQuery插件整理
2010/12/06 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
JS遍历Json字符串中键值对先转成JSON对象再遍历
2014/08/15 Javascript
js倒计时抢购实例
2015/12/20 Javascript
JS原型、原型链深入理解
2016/02/27 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
jquery实现的放大镜效果示例
2020/02/24 jQuery
在vue中实现嵌套页面(iframe)
2020/07/30 Javascript
windows下python和pip安装教程
2018/05/25 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
2019/01/08 Python
Python实现的拉格朗日插值法示例
2019/01/08 Python
python实现创建新列表和新字典,并使元素及键值对全部变成小写
2019/01/15 Python
Django框架orM与自定义SQL语句混合事务控制操作
2019/06/27 Python
Python入门Anaconda和Pycharm的安装和配置详解
2019/07/16 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Python中os模块功能与用法详解
2020/02/26 Python
Django haystack实现全文搜索代码示例
2020/11/28 Python
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
检察官就职演讲稿
2014/01/13 职场文书
经理任命书模板
2014/06/06 职场文书
Python语言中的数据类型-序列
2022/02/24 Python
关于JS中的作用域中的问题思考分享
2022/04/06 Javascript