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 相关文章推荐
论坛特效代码收集(落伍转发-不错)
Dec 02 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
Nov 30 Javascript
js操作ajax返回的json的注意问题!
Feb 23 Javascript
javascript代码编写需要注意的7个小细节小结
Sep 21 Javascript
js判断设备是否为PC并调整图片大小
Feb 12 Javascript
jQuery如何将选中的对象转化为原始的DOM对象
Jun 09 Javascript
JavaScript 事件入门知识
Apr 13 Javascript
Vue 中批量下载文件并打包的示例代码
Nov 20 Javascript
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
angular4自定义表单控件[(ngModel)]的实现
Nov 23 Javascript
vue+element tabs选项卡分页效果
Jun 29 Javascript
vue单元格多列合并的实现
Nov 26 Vue.js
为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
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
2015/02/03 PHP
php进程(线程)通信基础之System V共享内存简单实例分析
2019/11/09 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
javascript instanceof,typeof的区别
2010/03/24 Javascript
JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
2010/11/16 Javascript
利用JS延迟加载百度分享代码,提高网页速度
2013/07/01 Javascript
js中自定义方法实现停留几秒sleep
2014/07/11 Javascript
Javascript核心读书有感之语言核心
2015/02/01 Javascript
JavaScript 匿名函数和闭包介绍
2015/04/13 Javascript
基于webpack.config.js 参数详解
2018/03/20 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
python实现定时播放mp3
2015/03/29 Python
在Python中使用matplotlib模块绘制数据图的示例
2015/05/04 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
python中异常报错处理方法汇总
2016/11/20 Python
python 爬虫出现403禁止访问错误详解
2017/03/11 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
解决Pytorch 训练与测试时爆显存(out of memory)的问题
2019/08/20 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
荷兰和比利时时尚鞋店:Van Dalen
2018/04/23 全球购物
个人授权委托书
2014/04/03 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
优秀管理者事迹材料
2014/05/22 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
音乐节策划方案
2014/06/09 职场文书
学习退步检讨书
2014/09/28 职场文书
单位工作证明格式模板
2014/10/04 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
2014年前台文员工作总结
2014/12/08 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
如何获取numpy array前N个最大值
2021/05/14 Python