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 相关文章推荐
firefox中JS读取XML文件
Dec 21 Javascript
JavaScript 获取当前时间戳的代码
Aug 05 Javascript
ScrollDown的基本操作示例
Jun 09 Javascript
javascript模拟地球旋转效果代码实例
Dec 02 Javascript
jQuery中 prop() attr()使用详解
May 19 Javascript
jQuery实现带滑动条的菜单效果代码
Aug 26 Javascript
angular ngClick阻止冒泡使用默认行为的方法
Nov 03 Javascript
详解Javascript数据类型的转换规则
Dec 12 Javascript
Vue项目pdf(base64)转图片遇到的问题及解决方法
Oct 19 Javascript
vue实现Input输入框模糊查询方法
Jan 29 Javascript
JavaScript仿京东秒杀倒计时
Mar 17 Javascript
javascript 模块依赖管理的本质深入详解
Apr 30 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生成zip压缩文件的方法详解
2013/06/09 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
cument.execCommand()用法深入理解
2012/12/04 Javascript
JS实现一键回顶功能示例代码
2013/10/28 Javascript
Jquery 切换不同图片示例代码
2013/12/05 Javascript
使用jQuery不判断浏览器高度解决iframe自适应高度问题
2014/12/16 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
javascript中去除数组重复元素的实现方法【实例】
2016/04/12 Javascript
微信小程序  网络请求API详解
2016/10/25 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
js实现图片放大并跟随鼠标移动特效
2019/01/18 Javascript
javascript实现小型区块链功能
2019/04/03 Javascript
js实现3D粒子酷炫动态旋转特效
2020/09/13 Javascript
[09:47]2018DOTA2亚洲邀请赛4.5SOLO赛 No[o]ne vs Sumail
2018/04/06 DOTA
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python爬虫爬取美剧网站的实现代码
2016/09/03 Python
python GUI实现小球满屏乱跑效果
2019/05/09 Python
python的pytest框架之命令行参数详解(下)
2019/06/27 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
使用Keras预训练好的模型进行目标类别预测详解
2020/06/27 Python
python批量修改文件名的示例
2020/09/27 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
可自定义箭头样式的CSS3气泡提示框
2016/03/16 HTML / CSS
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
2012/06/05 面试题
文员岗位职责范本
2014/03/08 职场文书
财务情况说明书范文
2014/05/06 职场文书
应届生求职信范文
2014/06/30 职场文书
党员争先创优承诺书
2015/01/20 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
SQL模糊查询报:ORA-00909:参数个数无效问题的解决
2021/06/21 Oracle