简单人生
幻想指点江山,梦中激扬文字
 <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>
缓存方法同上,这里就不多讨论了


请求加精……唉。没地方加精。
posted on 2007-10-17 17:44 简单人生 阅读(9861) 评论(13)  编辑 收藏 引用 所属分类: Loving PHP
Comments
  • # re: JS全选checkBox最佳方案。原创哦
    991
    Posted @ 2007-10-17 17:56
    顶!呵呵。  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    991
    Posted @ 2007-10-17 19:20
    var l = m.length; //牛X语句

    以前没有刻意去验证这两种写法有多大差距。
    $num = getCount();
    for($i=0;$i<$num;$i++){} 与
    for($i=0;$i<getCount();$i++){}的区别

    在这个例子很好体现。

      回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    991
    Posted @ 2007-10-17 19:25
    一不小心多复制了6w多,

    b()也就2秒多,
    c()一秒多。

    呵呵。


    加精~!  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    简单人生
    Posted @ 2007-10-17 19:43
    如果名字不一样呢?如果NAME名字不一样,你只能用TagName的时候,你就会知道这个差距是多大了……  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    简单人生
    Posted @ 2007-10-17 21:38
    又有朋友和我讲……完全可以
    m[i].checked = !m[i].checked;  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    十三郎
    Posted @ 2007-10-23 10:27
    不知道怎么说,连最基本的功能实现都不是太好。
    假如你选择一个,再点击全选,全选了吗?  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    简单人生
    Posted @ 2007-10-29 13:11
    @十三郎
    那就是复选了。因为我没有判断它是否现在选中,我这个只是为了说明一下,如果同时选中这么多checkbox框的耗时情况。然后说明一下,写代码稍有一点规范性。本身我的代码中就是偷懒写法。。黑黑  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    高原
    Posted @ 2007-12-17 07:03
    真是学到东西了.不错,以后写程序要注意这方面的问题.  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦[未登录]
    小可
    Posted @ 2009-04-09 11:56
    学习了  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦[未登录]
    过客
    Posted @ 2009-09-02 15:35
    感谢感谢,真是受益  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    xxx
    Posted @ 2009-09-23 17:43
    我又要说LZ 了, 给你说个比较好的 array[i].checked=obj.checked;  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    王龙俊
    Posted @ 2011-03-13 21:50
    这个实现的是反选而不是全选。
    要实现全选可以按照全选按钮的checked属性未参照flag,全选按钮checked,就将待选按钮就全部设置为checked。反之亦然。  回复  更多评论   
  • # re: JS全选checkBox最佳方案。原创哦
    小五
    Posted @ 2011-10-09 14:58
    文章写的不错。。
    下面是小建议。。呵呵
    ca[i].checked=!ca[i].checked;  回复  更多评论   
只有注册用户登录后才能发表评论。