checkbox全选所涉及到的知识点介绍


Posted in Javascript onDecember 31, 2013

1、IE里起作用,火狐不起作用

IE版本

<script type="text/javascript"> function checkALL(str)//全选控制的JS 
{ 
var a=document.getElementsByName(str); 
var n=a.length; 
for(var i=0;i<n;i++) 
{ 
a[i].checked=window.event.srcElement.checked; 
} 
} 
</script>

火狐版本
<script type="text/javascript"> function checkALL(str)//全选控制的JS 
{ 
var a=document.getElementsByName(str); 
var n=a.length; 
for(var i=0;i<n;i++){ 
a[i].checked=document.getElementById("all").checked; 
} 
} 
</script>

原因分析:window.event只能在IE下运行,所以在火狐下js运行不起作用。火狐版本里头,是直接获得"id=all"的checkbox被选择状态,然后赋值给"name=str"的checkbox组的每一项,这样就可以保持选择状态的同步。

2、document.getElementById()与document.getElementsByName()的区别

上面那段js通过两种方式获得了checkbox的状态,从名字上看,他们的作用应该是类似,一个通过id获得元素,一个通过name获得元素。但这两个方法是有差别的,如果在使用过程中不注意,很可能会觉得可以混用,从而会造成困扰。我当时就觉得随便用一个就好,但改名字后,js代码却不起作用,其实是因为不了解,导致用错了。

(1)document.getElementById()是通过id访问某一个特定元素,因为在一个页面中id是唯一的,所以这个函数返回的是一个Element

(2)document.getElementsByName()是通过name来访问元素,因为在一个页面中name不是唯一的,可以重名,所以这个函数返回的是一组Elements

正是因为一个是元素,一个是数组,所以在混用的时候不注意就会出错,导致js运行不下去。比如,当时我把a[i].checked=document.getElementById("all").checked;改成a[i].checked=document.getElementsByName("all").checked;的时候,js运行不起作用(因为js出错但不报错,所以感觉是没起作用),其实此处并不是不识别,是因为调用的时候用错了,正确写法是a[i].checked=document.getElementsByName("all")[0].checked;这样改后,效果一样。因为我们的页面中只存在一个"name=all"的checkbox,所以我们以[0]来取Elements中的第一个元素,就是我们通过a[i].checked=document.getElementById("all").checked;获得的那个元素。

Javascript 相关文章推荐
网上抓的一个特效
May 11 Javascript
jQuery对象初始化的传参方式
Feb 26 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
Mar 02 Javascript
jQuery检测滚动条是否到达底部
Dec 15 Javascript
JavaScript6 let 新语法优势介绍
Jul 15 Javascript
jQuery实现点击表格单元格就可以编辑内容的方法【测试可用】
Aug 01 Javascript
js下拉菜单生成器dropMenu使用方法详解
Aug 01 Javascript
JS实现移动端判断上拉和下滑功能
Aug 07 Javascript
JS实现的按钮点击颜色切换功能示例
Oct 19 Javascript
Vuex 使用及简单实例(计数器)
Aug 29 Javascript
vue-cli3+typescript新建一个项目的思路分析
Aug 06 Javascript
JS自定义对象创建与简单使用方法示例
Jan 15 Javascript
用js+iframe形成页面的一种遮罩效果的具体实现
Dec 31 #Javascript
js类式继承的具体实现方法
Dec 31 #Javascript
利用javascript判断文件是否存在
Dec 31 #Javascript
jquery实现checkbox全选全不选的简单实例
Dec 31 #Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
Dec 31 #Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
Dec 31 #Javascript
IE与FireFox的JavaScript兼容问题解决办法
Dec 31 #Javascript
You might like
Codeigniter注册登录代码示例
2014/06/12 PHP
PHP生成不重复随机数的方法汇总
2014/11/19 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
JavaScript中“+=”的应用
2007/02/02 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
Json字符串转换为JS对象的高效方法实例
2013/05/01 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
轻松使用jQuery双向select控件Bootstrap Dual Listbox
2015/12/13 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
webpack4.0打包优化策略整理小结
2018/03/30 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
React Native中Mobx的使用方法详解
2018/12/04 Javascript
使用jQuery如何写一个含验证码的登录界面
2019/05/13 jQuery
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
Vue 修改网站图标的方法
2020/12/31 Vue.js
python 的列表遍历删除实现代码
2020/04/12 Python
Python文件处理
2016/02/29 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
python在地图上画比例的实例详解
2020/11/13 Python
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
Nike俄罗斯官方网站:Nike RU
2021/03/05 全球购物
出纳员岗位责任制
2014/02/11 职场文书
带香烟到学校抽的检讨书
2014/09/25 职场文书
村干部四风问题整改措施
2014/09/30 职场文书
2014年留守儿童工作总结
2014/12/10 职场文书
捐款感谢信
2015/01/20 职场文书
2016公司年会通知范文
2015/04/25 职场文书
三方合作意向书范本
2015/05/09 职场文书
投诉信格式范文
2015/07/02 职场文书
56句经典英文座右铭
2019/08/09 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
利用Python+OpenCV三步去除水印
2021/05/28 Python
javascript之Object.assign()的痛点分析
2022/03/03 Javascript