您的位置:首页 > Web前端 > JavaScript

JS 全选 checkBox 最佳方案

2013-12-17 03:28 405 查看
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>


缓存方法同上,这里就不多讨论了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: