<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值都一样,如果不一样怎么办???
  只能这样:

<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>