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 相关文章推荐
JQuery页面图片切换和新闻列表滚动效果的具体实现
Sep 26 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
Aug 15 Javascript
JavaScript实现页面定时刷新(定时器,meta)
Oct 12 Javascript
js实现上传图片预览方法
Oct 25 Javascript
Bootstrap风格的zTree右键菜单
Feb 17 Javascript
vue之数据交互实例代码
Jun 16 Javascript
浅析JS抽象工厂模式
Dec 14 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
Dec 24 Javascript
JavaScript实现的联动菜单特效示例
Jul 08 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
Aug 03 Javascript
如何区分vue中的v-show 与 v-if
Sep 08 Javascript
javascript Number 与 Math对象的介绍
Nov 17 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
Body是什么,该怎么喝出咖啡里的口感
2021/03/03 咖啡文化
动态生成gif格式的图像要注意?
2006/10/09 PHP
php自定义函数call_user_func和call_user_func_array详解
2011/07/14 PHP
PHP实现搜索相似图片
2015/09/22 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
javascript克隆对象深度介绍
2012/11/20 Javascript
jquery全选/全不选/反选另一种实现方法(配合原生js)
2013/04/07 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
javascript比较两个日期相差天数的方法
2015/07/24 Javascript
使用堆实现Top K算法(JS实现)
2015/12/25 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
JavaScript实现旋转轮播图
2020/08/18 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
JS中验证整数和小数的正则表达式
2018/10/08 Javascript
node 标准输入流和输出流代码实例
2019/09/19 Javascript
vue 子组件修改data或调用操作
2020/08/07 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
Python抓取电影天堂电影信息的代码
2016/04/07 Python
pygame游戏之旅 调用按钮实现游戏开始功能
2018/11/21 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
完美解决Django2.0中models下的ForeignKey()问题
2020/05/19 Python
python是怎么被发明的
2020/06/15 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
iphoneX 适配客户端H5页面的方法教程
2017/12/08 HTML / CSS
高中毕业生自我鉴定
2013/11/03 职场文书
安全生产检讨书
2014/01/21 职场文书
高中军训感言500字
2014/02/24 职场文书
幼儿园元旦家长感言
2014/02/27 职场文书
高中家长寄语
2014/04/02 职场文书
小城镇建设汇报材料
2014/08/16 职场文书
教师党员自我评价范文
2015/03/04 职场文书
读《方与圆》有感:交友方圆有度
2020/01/14 职场文书
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS