昨天项目测试的时候,IE8、IE11测试勾选checkbox然后执行保存的时候,竟然执行的结果与预期相反,吓屎我了,最终排查之下,原来是拼接checkbox的值的时候出现的问题。本人对js了解知之甚少,用的不多,最近几个项目都是大批的js,遇到各种小白问题,没办法只好慢慢学了。
HTML:
<input type="checkbox" name="test" value="1"/><span>1</span> <input type="checkbox" name="test" value="2"/><span>2</span> <input type="checkbox" name="test" value="3"/><span>3</span> <input type="checkbox" name="test" value="4"/><span>4</span> <input type="checkbox" name="test" value="5"/><span>5</span><br> <input type='button' value='提交' onclick="fun()"/></span>
原js代码:
var obj = document.getElementsByName("test"); check_val = []; for(k in obj){ if(obj[k].checked){ check_val.push(obj[k].value); } } alert(check_val.length);
勾选1和2之后的执行结果:IE弹出0,Chrome和Firefox弹出2;
难道是IE不支持push()?
修改如下的js:
var obj = document.getElementsByName("test"); var s=''; for(k in obj){ if(obj[k].checked){ s+=obj[k].value+','; } } alert("s"+s);
勾选1和2之后的执行结果:IE弹出s,Chrome和Firefox弹出s1,2,;
真奇怪,怎么IE又闹特别了呢?好吧,继续改
再次修改之后的js:
var obj = document.getElementsByName("test"); var s=''; for(k=0;k<obj.length;k++){ if(obj[k].checked){ s+=obj[k].value+','; } } alert("s"+s);</span>
勾选1和2之后的执行结果:三个浏览器一致的弹出s1,2,
总结一下吧
1.for...in 遍历的不是数组而是对象,所以他遍历访问的是obj的每个属性,而不是数组元素;
2.for....in循环的效率低于for循环;
3.IE貌似不是很好的支持push() [研究ing..........];
4.有待再发现....
相关推荐
压缩包中含有 IE、Firefox、chrome 三种浏览器对应的最新版本驱动 支持IE11、Firefox50、chrome53
解决IE,Firefox,chrome,safari浏览器中iframe显示高度自适应问题
Javascript中如何处理浏览器兼容问题
weboffice for chrome firefox,点聚weboffice兼容谷歌chrome与firefox浏览器,解决了weboffice在谷歌下无法使用的问题
HackBar2.2.9一款插件,添加到Chrome和firefox浏览器。直接导入浏览器.网络安全
超好用的js操作Excel实现数据导入导出JS包。只需引入JS包即可完成功能开发。压缩包中有Demo,参照编写即可。
JS日期选择器(兼容IE,FireFox,Oprea,chrome等主流浏览器)
FireFox chrome IE opera 等浏览器加载背景音乐 解决了兼容性问题
CSS Hack兼容大全,令网页能正常显示在IE5,IE5.5,IE6,IE7,Firefox,Opera,Safari等浏览器上
div+css兼容ie6ie7ie8ie9和FireFoxChrome等浏览器方法[借鉴].pdf
浏览器兼容性问题收集(IE,Firefox,Chrome,Safri)
chrome浏览器chrome浏览器chrome浏览器chrome浏览器
css圆角,阴影,支持ie/firefox/chrome等全部浏览器
JS弹出式QQ在线客服插件,支持浏览器IE、FireFox、Chrome、Safari等主流浏览器
像firefox(火狐)、Chrome、Apple Safari等非ie内核浏览器都不支持activex控件,这样就大大加大了系统使用的局限性。 因此考虑是不是可以让非ie内核浏览器也能支持activex控件,目前火狐等浏览器也有类似于activex...
你可以在ie6、ie7、ie8、ie9、ie10、firefox、google chrome浏览器中看到不同的效果,测试兼容性。只针对ie以及Gecko内核、WebKit内核。
eWebEditor V7.0 版发布,新增支持FireFox(火狐)、Chrome(谷歌)浏览器。新增超级多文件分块上传、G级大文件上传解决方案。内核全部重写。完美对话框界面。增强的多插件媒体插入支持、选项卡、代码格式化、保护模式、...