XML/HTML代码
- <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 = !m[i].checked;
- }
- }
- function b(){
- var m = document.getElementsByName('test[]');
- var l = m.length;
- for ( var i=0; i< l; i++){
- m[i].checked = !m[i].checked;
- }
- }
- function c(){
- if (ca.length == 0){
- ca = cache();
- }
- cl = ca.length;
- for ( var i=0; i< cl; i++){
- ca[i].checked = ! ca[i].checked;
- }
- }
- 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值都一样,如果不一样怎么办???
只能这样:
JavaScript代码
- <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 = !inputs[i].checked;
- }
- }
- }
- //-->
- </script>