记得好多年前、做一个表格、有几千行数据、需要全选。
<input type="button" name="" value="不计算长度" onclick="a()"> <input type="button" name="" value="全选" onclick="b()"> <input type="button" value="缓存" onclick="c()"> <input type="checkbox" name="test[]" value="0"> 测试测试<br> <script language="JavaScript"> <!-- var ca = new Array(); function a() { var m = document.getElementsByName('test[]'); for ( var i=0; i< m.length ; i++ ) { m[i].checked == true ? m[i].checked = false : m[i].checked = true; } } function b() { var m = document.getElementsByName('test[]'); var l = m.length; for ( var i=0; i< l; i++) { m[i].checked == true ? m[i].checked = false : m[i].checked = true; } } function c() { if (ca.length == 0) { ca = cache(); } cl = ca.length; for ( var i=0; i< cl; i++) { ca[i].checked == true ? ca[i].checked = false : ca[i].checked = true; } } function cache() { var m = document.getElementsByName('test[]'); var cache = new Array(); var l = m.length; for ( var i=0; i< l; i++) { cache[i] = m[i]; } return cache; } //--> </script>
嘿嘿,至于那个input type="checkbox"的,你们就尽量复制吧,尽量不要超过1W,否则。。别怪我没有提醒你,当然了,也不需要把浏览器关掉,跑到外面抽根烟再回来就行了。
所以,我们要切实的记住,反正数组有长度的,坚决不能放在循环里面,而是先将这个长度取出来当成变量。PHP里也一样,循环数组的时候,先count数组的长度比较好。
当然了,我第三个采用了缓存,速度也是非常快的,比长度取好后再进行计算更快,因为连一次都不用取了(当然,除了第一次),全部扔给客户端了。
上面的例子还是比较方便的,因为,checkbox的 name值都一样,如果不一样怎么办???
只能这样
<script language="JavaScript"> <!-- function check() { var inputs = document.getElementsByTagName('input'); var inputsLen = inputs.length; for (var i = 0; i < inputsLen ; i++ ) { if (inputs[i].type.toLowerCase() == 'checkbox') { inputs[i].checked == true ? inputs[i].checked = false : inputs[i].checked = true; } } } //--> </script>
发表评论