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 Array数组对象的扩展函数代码
May 22 Javascript
jquery中eq和get的区别与使用方法
Apr 14 Javascript
JS模拟自动点击的简单实例
Aug 08 Javascript
利用jQuary实现文字浮动提示效果示例代码
Dec 26 Javascript
深入理解javascript变量声明
Nov 20 Javascript
举例说明如何为JavaScript的方法参数设置默认值
Nov 17 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
Dec 08 Javascript
js仿搜狐视频记录片列表展示效果
May 30 Javascript
基于jQuery实现简单人工智能聊天室
Feb 10 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 Javascript
JavaScript生成随机验证码代码实例
Sep 28 Javascript
关于React Native使用axios进行网络请求的方法
Aug 02 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字符串过滤与替换小结
2015/01/26 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
刷新时清空文本框内容的js代码
2007/04/23 Javascript
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
web的各种前端打印方法之jquery打印插件PrintArea实现网页打印
2013/01/09 Javascript
jQuery实现公告文字左右滚动的实例代码
2013/10/29 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
js实现点击图片将图片地址复制到粘贴板的方法
2015/02/16 Javascript
JavaScript动态加载样式表的方法
2015/03/21 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
jquery实现清新实用的网页菜单效果
2015/08/28 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
2016/05/31 Javascript
localStorage的黑科技-js和css缓存机制
2017/02/06 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
使用node打造自己的命令行工具方法教程
2018/03/26 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
element-ui table组件如何使用render属性的实现
2019/11/04 Javascript
Vue vm.$attrs使用场景详解
2020/03/08 Javascript
[01:15:36]加油刀塔第二期网络版
2014/08/09 DOTA
[00:35]DOTA2上海特级锦标赛 Newbee战队宣传片
2016/03/03 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
python xml解析实例详解
2016/11/14 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
去除python中的字符串空格的简单方法
2020/12/22 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
html5中JavaScript removeChild 删除所有节点
2014/05/16 HTML / CSS
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
材料成型专业个人求职信范文
2013/09/25 职场文书
领导党性分析材料
2014/02/15 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
税务职业生涯规划书范文
2014/09/16 职场文书
使用 Apache Dubbo 实现远程通信(微服务架构)
2022/02/12 Servers