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读取RSS数据
Jan 20 Javascript
syntaxhighlighter 使用方法
Jul 02 Javascript
javascript数组去掉重复
May 12 Javascript
js图片处理示例代码
May 12 Javascript
浅谈jquery事件处理
Apr 24 Javascript
js针对ip地址、子网掩码、网关的逻辑性判断
Jan 06 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
Mar 21 Javascript
深入理解requestAnimationFrame的动画循环
Sep 20 Javascript
javascript中this关键字详解
Dec 12 Javascript
分析JS单线程异步io回调的特性
Dec 01 Javascript
浅谈js中的attributes和Attribute的用法与区别
Jul 16 Javascript
jquery插件实现轮播图效果
Oct 19 jQuery
为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 数组的一个悲剧?
2011/05/11 PHP
一个典型的PHP分页实例代码分享
2011/07/28 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
PHP如何实现Unicode和Utf-8编码相互转换
2015/07/29 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
javascript json 新手入门文档
2009/12/03 Javascript
jQuery代码优化 遍历篇
2011/11/01 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
Javascript在IE和Firefox浏览器常见兼容性问题总结
2016/08/03 Javascript
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
Vue利用canvas实现移动端手写板的方法
2018/05/03 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
Vue 实现点击空白处隐藏某节点的三种方式(指令、普通、遮罩)
2019/10/23 Javascript
Vue如何使用混合Mixins和插件开发详解
2020/02/05 Javascript
python实现挑选出来100以内的质数
2015/03/24 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
Python入门之三角函数sin()函数实例详解
2017/11/08 Python
利用Python实现Shp格式向GeoJSON的转换方法
2019/07/09 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
python isinstance函数用法详解
2020/02/13 Python
Html5 语法与规则简要概述
2014/07/29 HTML / CSS
Nuts.com:优质散装,批发坚果、干果和巧克力等
2017/03/21 全球购物
Nisbets法国:英国最大的厨房和餐饮设备供应商
2019/03/18 全球购物
行政助理岗位职责范文
2013/12/03 职场文书
运动会广播稿300字
2014/01/10 职场文书
《社戏》教学反思
2014/04/15 职场文书
公路绿化方案
2014/05/12 职场文书
员工生日活动方案
2014/08/24 职场文书
体育活动总结
2015/02/04 职场文书
公务员廉洁从政心得体会
2016/01/19 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
JavaScript 中for/of,for/in 的详细介绍
2021/11/17 Javascript