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 相关文章推荐
吐槽一下我所了解的Node.js
Oct 08 Javascript
js实现ifram取父窗口URL地址的方法
Feb 09 Javascript
JS+CSS实现Li列表隔行换色效果的方法
Feb 16 Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 Javascript
js实现页面跳转的几种方法小结
May 16 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
Aug 02 Javascript
vue.js中$watch的用法示例
Oct 04 Javascript
详解webpack+vue-cli项目打包技巧
Jun 17 Javascript
用Axios Element实现全局的请求loading的方法
Mar 15 Javascript
Vue不能观察到数组length的变化
Jun 08 Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
vue如何实现关闭对话框后刷新列表
Apr 08 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 magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
php 保留小数点
2009/04/21 PHP
php后退一页表单内容保存实现方法
2012/06/17 PHP
带你了解PHP7 性能翻倍的关键
2015/11/19 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
js过滤HTML标签完整实例
2015/11/26 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
2017/03/23 jQuery
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
Vue中的基础过渡动画及实现原理解析
2018/12/04 Javascript
基于Three.js实现360度全景图片
2018/12/30 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
Python面向对象之Web静态服务器
2019/09/03 Python
Python Print实现在输出中插入变量的例子
2019/12/25 Python
python不使用for计算两组、多个矩形两两间的iou方式
2020/01/18 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
使用CSS3和Checkbox实现JQuery的一些效果
2015/08/03 HTML / CSS
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
Clarks西班牙官方在线商店:clarks鞋
2019/05/03 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
董事长岗位职责
2013/11/30 职场文书
大学生自我鉴定评语
2014/01/27 职场文书
护理不良事件检讨书
2014/02/06 职场文书
房地产促销活动方案
2014/03/01 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
运动员代表致辞
2015/07/29 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
python数字图像处理之图像自动阈值分割示例
2022/06/28 Python