作家
登录

IE中checkbox在刷新后初始化的问题

作者: 来源:www.28hudong.com 2013-03-30 01:55:46 阅读 我要评论

初一看这个功能很简单,一个checkbox,加一段脚本,把这个checkbox的checked属性设为false。 复制代码 代码如下: <input type="checkbox" id="chk_UnInital" name="chk_UnInital" /> <script>document.getElementById("chk_UnInital").checked=false;</script> 这段代码在firefox等其它浏览器中都能实现这个需求,维独在IE中死活不行,每次把勾勾上,无论是刷新还是后退,这个勾都是勾上的。 难道是在IE下这段代码没工作? 验证一下,在这段脚本前后各加一个alert,发现在执行这checked=false之前和之后这个checkbox都是未选中的,当把警告框确定后,这个勾反而出现了! 这说明在后面的页面加载顺序中,某个事件又把这个checkbox设为true了,先试着在页面onload里再执行这段脚本 复制代码 代码如下: <script> window.onload=function(){   alert("before");   document.getElementById("chk_UnInital").checked=false; } </script> 果然发现在执行alert("before");时这个勾是选中的,这说明在onload事件之前这个勾就被浏览器自动选上了,具体是什么原因就涉及到IE内部的机制了。 将这个function注册在onload事件里,到这里这个需求就实现了。 然而onload是在页面所有的元素都加载完后才会执行,在本地测试的时候有一个请求返回很慢,从而使onload事件迟迟不能执行,这是我们不愿意看到的。 后来发现网站上另一处checkbox在页面刷新时不会保存之前的状态,经过仔细对比之后发现这个input多了一个checked=""属性: <input type="checkbox" id="chk_Inital" name="chk_Inital" checked="" /> 有了这个属性后,事件不用放在onload里也能起作用了 这是什么原因呢? 接着做以下试验: 复制代码 代码如下: <input type="checkbox" id="chk_UnInital" name="chk_UnInital" /> <label for="chk_UnInital">This checkbox can't be Inital</label> <br> <input type="checkbox" id="chk_Inital" name="chk_Inital" checked=""/> <label for="chk_Inital">This checkbox can be inital</label> <br> <script> //window.onload=function(){ var chks=document.getElementsByTagName("input"); for(var i=0,l=chks.length;i<l;i++){   alert(chks[i].id);   chks[i].checked=false; } //} </script> 为了便于叙述,我们这里将上面这段脚本的执行时间称为t1,window.onload的执行时间称为t3,这之间的执行时间称为t2 通过加入alert后,对比发现:       chk_UnInital  chk_Inital 脚本放在script块中执行: t1之前    未选中      选中 t1之后    选中      未选中 下面是放在onload中执行: t3之前    选中       选中 t3之后    未选中      未选中 发现加checked=""后在t1之前即为选中状态,然后被t1置为unchecked。 总结: 方案一:在onload事件里处理 方案二:加上checked属性 New Document This checkbox can't be Inital This checkbox can be inital Click this link and then forward,see the two checkbox status [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]

  推荐阅读

  jQuery 入门级学习笔记及源码

jQuery真的很好,有些效果甚至让我尖叫。而各种插件能实现你喜欢的效果,这种方式为jQuery的流行奠定了基础,就像那个crocs鞋子似的。jQuery还有一个优点是达到了将行为与结构分开的目的。 内容概要: 1. 安装 2. >>>详细阅读


本文标题:IE中checkbox在刷新后初始化的问题

地址:http://www.17bianji.com/kaifa2/JS/27210.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)