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 相关文章推荐
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
解决checkbox的attr(checked)一直为undefined问题
Jun 16 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
Oct 11 Javascript
早该知道的7个JavaScript技巧
Jun 21 Javascript
微信小程序 switch组件详解及简单实例
Jan 10 Javascript
javascript实现二叉树的代码
Jun 08 Javascript
Webpack4 使用Babel处理ES6语法的方法示例
Mar 07 Javascript
vue实现微信二次分享以及自定义分享的示例
Mar 20 Javascript
JavaScrip数组去重操作实例小结
Jun 20 Javascript
JS实现简易留言板特效
Dec 23 Javascript
原生js+canvas实现验证码
Nov 29 Javascript
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
用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
php遍历目录viewDir函数
2009/12/15 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
javascript dom 操作详解 js加强
2009/07/13 Javascript
文本框的字数限制功能jquery插件
2009/11/24 Javascript
jQuery判断元素是否是隐藏的代码
2011/04/24 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
Js表格万条数据瞬间加载实现代码
2014/02/20 Javascript
JavaScript立即执行函数的三种不同写法
2014/09/05 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
2015/08/13 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
详解JavaScript函数对象
2015/11/15 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
HTML5 JS压缩图片并获取图片BASE64编码上传
2020/11/16 Javascript
JavaScript Date 知识浅析
2017/01/29 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
详解vue-cli中模拟数据的两种方法
2018/07/03 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
vue+element tabs选项卡分页效果
2020/06/29 Javascript
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
[01:33:25]DOTA2-DPC中国联赛 正赛 Elephant vs IG BO3 第一场 1月24日
2021/03/11 DOTA
python实现Adapter模式实例代码
2018/02/09 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
Python通过正则库爬取淘宝商品信息代码实例
2020/03/02 Python
Python网络爬虫四大选择器用法原理总结
2020/06/01 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
欧洲、亚洲、非洲和拉丁美洲的度假套餐:Great Value Vacations
2019/03/30 全球购物
集团公司总经理岗位职责
2013/12/20 职场文书
《特殊的葬礼》教学反思
2014/04/27 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
领导干部个人对照检查材料(群众路线)
2014/09/26 职场文书
抢劫罪辩护词
2015/05/21 职场文书
暂住证明怎么写
2015/06/19 职场文书
MySQL中连接查询和子查询的问题
2021/09/04 MySQL
vue 自定义组件添加原生事件
2022/04/21 Vue.js