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 语法基础 想学习js的朋友可以看看
Dec 16 Javascript
JQuery切换显示的效果实例代码
Feb 27 Javascript
js 3种归并操作的实例代码
Oct 30 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
JavaScript中的对象的extensible属性介绍
Dec 30 Javascript
Js制作点击输入框时默认文字消失的效果
Sep 05 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
Dec 21 Javascript
JS鼠标3次点击事件实现代码及扩展思路
Sep 12 Javascript
webpack4.x开发环境配置详解
Aug 04 Javascript
JavaScript变速动画函数封装添加任意多个属性
Apr 03 Javascript
JavaScript实现拖拽和缩放效果
Aug 24 Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 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
咖啡语言
2021/03/03 咖啡文化
php限制上传文件类型并保存上传文件的方法
2015/03/13 PHP
用于自动添加Digg This!按钮的JavaScript
2006/12/23 Javascript
如何在Web页面上直接打开、编辑、创建Office文档
2007/03/12 Javascript
javascript 实现简单的table排序及table操作练习
2012/12/28 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
JavaScript之WebSocket技术详解
2016/11/18 Javascript
使用JS实现图片轮播的实例(前后首尾相接)
2017/09/21 Javascript
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
用Node编写RESTful API接口的示例代码
2018/07/04 Javascript
浅析vue-router原理
2018/10/19 Javascript
微信小程序利用button控制条件标签的变量问题
2020/03/15 Javascript
vue与iframe之间的信息交互的实现
2020/04/08 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
浅析JavaScript中的事件委托机制跟深浅拷贝
2021/01/20 Javascript
Django框架中方法的访问和查找
2015/07/15 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
Python 内置函数complex详解
2016/10/23 Python
Python中创建字典的几种方法总结(推荐)
2017/04/27 Python
破解安装Pycharm的方法
2018/10/19 Python
Django中数据库的数据关系:一对一,一对多,多对多
2018/10/21 Python
python自动发送测试报告邮件功能的实现
2019/01/22 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
植物选择:Botanic Choice
2017/02/15 全球购物
泰国汽车、火车和轮渡票预订网站:Bus Online Ticket
2017/09/09 全球购物
金融管理应届生求职信
2014/02/20 职场文书
2015年教师工作总结范文
2015/03/31 职场文书
辛亥革命观后感
2015/06/02 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
用Python实现Newton插值法
2021/04/17 Python
前端监听websocket消息并实时弹出(实例代码)
2021/11/27 Javascript
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技