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 相关文章推荐
setInterval 和 setTimeout会产生内存溢出
Feb 15 Javascript
jQuery阻止事件冒泡具体实现
Oct 11 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
Oct 19 Javascript
基于rollup的组件库打包体积优化小结
Jun 18 Javascript
JS中DOM元素的attribute与property属性示例详解
Sep 04 Javascript
Angular 实现输入框中显示文章标签的实例代码
Nov 07 Javascript
vue 项目build错误异常的解决方法
Apr 22 Javascript
Vue 实现前进刷新后退不刷新的效果
Jun 14 Javascript
在Vue项目中,防止页面被缩放和放大示例
Oct 28 Javascript
uniapp,微信小程序中使用 MQTT的问题
Jul 11 Javascript
Vue组件通信$attrs、$listeners实现原理解析
Sep 03 Javascript
JavaScript大数相加相乘的实现方法实例
Oct 18 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
千呼万唤始出来,DOTA2勇士令状不朽宝藏Ⅱ现已推出
2020/08/25 DOTA
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
php &amp;&amp; 逻辑与运算符使用说明
2010/03/04 PHP
PHP中最容易忘记的一些知识点总结
2013/04/28 PHP
php+mysql实现无限级分类
2015/11/11 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
数组任意位置插入元素,删除特定元素的实例
2017/03/02 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
如何用js控制css中的float的代码
2007/08/16 Javascript
jQuery 在光标定位的地方插入文字的插件
2012/05/10 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
如何将php数组或者对象传递给javascript
2014/03/20 Javascript
JS实现自适应高度表单文本框的方法
2015/02/25 Javascript
jquery 判断div show的状态实例
2016/12/03 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
Node.js中的http请求客户端示例(request client)
2017/05/04 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
微信小程序页面生命周期详解
2018/01/31 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
详解简单易懂的 ES6 Iterators 指南和示例
2019/09/24 Javascript
python中eval与int的区别浅析
2019/08/11 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
基于python的docx模块处理word和WPS的docx格式文件方式
2020/02/13 Python
Python爬虫HTPP请求方法有哪些
2020/06/03 Python
Python headers请求头如何实现快速添加
2020/11/03 Python
canvas实现扭蛋机动画效果的示例代码
2018/10/17 HTML / CSS
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
世界上最大的冷却器制造商:Igloo Coolers
2019/07/23 全球购物
ASOS西班牙官网:英国在线时尚和美容零售商
2020/01/10 全球购物
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
结婚典礼证婚词
2014/01/11 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
过程装备与控制工程专业求职信
2014/07/02 职场文书
python基础之//、/与%的区别详解
2022/06/10 Python