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写了一个清除“logo1_.exe”的杀毒工具(可扫描目录)
Feb 09 Javascript
Javascript 面向对象之重载
May 04 Javascript
jQuery Autocomplete自动完成插件
Jul 17 Javascript
JavaScript 盒模型 尺寸深入理解
Dec 31 Javascript
jquery解析JSON数据示例代码
Mar 17 Javascript
利用Bootstrap实现表格复选框checkbox全选
Dec 21 Javascript
jQuery编写网页版2048小游戏
Jan 06 Javascript
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
基于JavaScript 性能优化技巧心得(分享)
Dec 11 Javascript
jquery 输入框查找关键字并提亮颜色的实例代码
Jan 23 jQuery
VUE v-for循环中每个item节点动态绑定不同函数的实例
Sep 26 Javascript
浅谈es6中的元编程
Dec 01 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 版本]
2007/03/20 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
用js怎么把&amp;字符换成&quot;&amp;amp:&quot;
2006/10/19 Javascript
一个tab标签切换效果代码
2009/03/27 Javascript
JQuery 写的个性导航菜单
2009/12/24 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
html中鼠标滚轮事件onmousewheel的处理方法
2016/11/11 Javascript
js a标签点击事件
2017/03/30 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
jQuery表单设置值的方法
2017/06/30 jQuery
js断点调试心得分享(必看篇)
2017/12/08 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
react 中父组件与子组件双向绑定问题
2019/05/20 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
详解Node.js使用token进行认证的简单示例
2020/05/25 Javascript
解决vue页面刷新,数据丢失的问题
2020/11/24 Vue.js
JavaScript中跨域问题的深入理解
2021/03/04 Javascript
利用python爬取散文网的文章实例教程
2017/06/18 Python
浅谈python下tiff图像的读取和保存方法
2018/12/04 Python
Python中xml和json格式相互转换操作示例
2018/12/05 Python
Python理解递归的方法总结
2019/01/28 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
2019/08/28 Python
tensorflow之自定义神经网络层实例
2020/02/07 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
计算机专业毕业生求职信分享
2013/12/24 职场文书
戒毒悔改检讨书
2014/09/21 职场文书
2016高校自主招生自荐信范文
2016/01/28 职场文书
PHP策略模式写法
2021/04/01 PHP
pytorch实现ResNet结构的实例代码
2021/05/17 Python
Element-ui Layout布局(Row和Col组件)的实现
2021/12/06 Vue.js
JavaScript中reduce()的用法
2022/05/11 Javascript