大概有1000多列需要选择。

解决方案 »

  1.   

      不好意思,1000多行。
    function check(f)
            {
             var all = f.all.length
                for(var i=0;i <=all ;i++)
                {
                    tmpobject=null;
                    tmpobject=f.all[i];
                    if(tmpobject)
                    {
                        if(tmpobject.type=="checkbox")
                        {
                          if(!tmpobject.disabled)
                          {
                            tmpobject.checked=form1.allcheck.checked;
                          }
                        }
                    }
                }
            }
      

  2.   

    function check(f) 
            { 
            var a = f.all.length 
                for(var i=0;i <=a ;i++) 
                { 
                    tmpobject=null; 
                    tmpobject=f.all[i]; 
                    if(tmpobject) 
                    { 
                        if(tmpobject.type=="checkbox") 
                        { 
                          if(!tmpobject.disabled) 
                          { 
                            tmpobject.checked=form1.allcheck.checked; 
                          } 
                        } 
                    } 
                } 
            }
      

  3.   

    帮你优化了下,去掉个全局变量
     function check(f)
        {
            var a = document.getElementsByTagName("input");
            for(var i=0;i <=a.length ;i++)
            {
                if(a[i]&&a[i].type=="checkbox"&&!a[i].disabled)
                {                a[i].checked=form1.allcheck.checked;
                }        }
        }
      

  4.   

    一点就全选了~~没那么慢 啊~~10000条的时候慢~~<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     <HEAD>
      <TITLE> New Document </TITLE>
      <META NAME="Generator" CONTENT="EditPlus">
      <META NAME="Author" CONTENT="">
      <META NAME="Keywords" CONTENT="">
      <META NAME="Description" CONTENT="">
     </HEAD> <BODY>
      <input type="button" value="SelectAll" onclick="selectAll()"/>
      <SCRIPT LANGUAGE="JavaScript">
      var table=document.createElement("TABLE");
      table.id="tbl";
      var tbody = document.createElement("TBODY");
    for(var i=0;i<1000;i++)
    {
      var tr=document.createElement("TR");
      var td =document.createElement("TD");
      var checkbox=document.createElement("INPUT");
      checkbox.type="checkbox";
      checkbox.name="checkbox";
      td.appendChild(checkbox);
      tr.appendChild(td);
      tbody.appendChild(tr);
    }  table.appendChild(tbody);
         document.body.appendChild(table); function selectAll()
    {
    var table=document.getElementById("tbl");
    for(var i=0;i<table.rows.length;i++)
    {
    table.rows[i].cells[0].childNodes[0].checked=true;
    }
    }
      </SCRIPT>
     
     </BODY>
    </HTML>
      

  5.   

    谢谢楼上的,请问a[i]&&是什么意思。
    我修改为
     function check(f)
        {
            var a = document.getElementsByTagName("input");
            var aa = a.length;
            for(var i=0;i <=aa ;i++)
            {
                if(a[i]&&a[i].type=="checkbox"&&!a[i].disabled)
                {                a[i].checked=form1.allcheck.checked;
                }        }
        }
    速度又快点。现在600行,5s钟。还有优化的空间吗?谢谢。
      

  6.   

    && 逻辑判断符  与  
      

  7.   

    就是所有条件为真才继续执行,又给你优化了下,应该会再提高点速度<script>
        function check(f)
        {
            var a = document.getElementsByTagName("input");
            var aa = a.length;
            var isForm1check=form1.allcheck.checked
            for(var i=0;i <=aa ;i++)
            {
                var tmpa=a[i]
                if(tmpa&&tmpa=="checkbox"&&!tmpa.disabled)
                {
                    tmpa.checked=isForm1check;
                }        }
        }
    </script>
      

  8.   

    这个是全部代码:有哪里还可以优化。<script language ="javascript" type ="text/javascript"> 
        function check(f)
        {
            var a = document.getElementsByTagName("input");
    var aa = a.length;
            for(var i=0;i <=aa ;i++)
            {
                if(a[i].type=="checkbox"&&!a[i].disabled)
                {                a[i].checked=form1.allcheck.checked;
                }        }
        } function addCheckEvent() 
            {
                show() 
                var objs=document.getElementsByTagName("INPUT");
                var n = objs.length;
                for(var i=1;i < n ;i++) 
                { 
                    if(objs[i].type=="checkbox") 
                    { 
                        objs[i].onclick=show 
                    } 
                } 
            }
    function show() 

    var objs=document.getElementsByTagName("INPUT"); 
    var ifAllChecked=true; 
    var ss = objs.length;
    for(var i=1;i < ss;i++) 

    if(objs[i].type=="checkbox") 

        if(!objs[i].checked)
        {
         ifAllChecked=false;
         break;
        } 


    document.getElementById("allcheck").checked=ifAllChecked 

    </script>
      

  9.   

    <input type='checkbox' onclick='check("cid",this.checked)'/>点我全选<br/>
    <input type='checkbox' name='cid'/><br/>
    <input type='checkbox' name='cid'/><br/>
    <input type='checkbox' name='cid'/>
    <script type='text/javascript'>
    function check(name,t)
    {
    var a = document.getElementsByName(name);
    var aa = a.length;
    for(var i=0;i<aa ;i++)
    {
    a[i].checked = t;
    }
    }
      

  10.   

    尽量减少查询的次数和查询到的对象值:
    1. 给所有需要全选的checkbox取相同的name,比如name="n"//用1个全局变量保存查询到的所有checkbox,这些下次点击"全选"或者"取消全选 "的时候就不需要查找DOM,速度快不少
    var nAll =null;  
     function check(f)
        {
           if(nAll  ==null)
            nAll  = document. getElementsByName("n");
           var aa = nAll.length;
          //先用1个变量记住form1.allcheck是否选择,如果把form1.allcheck.checked放到循环中,每次循环都需要在DOM中查找allcheck,影响效率
           var ch = form1.allcheck.checked;   
            for(var i=0;i <=aa ;i++)
            {
                  nAll[i].checked= ch;
            }
        }
      

  11.   


    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>  
        <title>My JSP 'index.jsp' starting page</title>
    <meta http-equiv="pragma" content="no-cache">
    <meta http-equiv="cache-control" content="no-cache">
    <meta http-equiv="expires" content="0">    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="This is my page">
    <!--
    <link rel="stylesheet" type="text/css" href="styles.css">
    -->
    <script type="text/javascript">
    function $(id){
    if(document.getElementById){
    return document.getElementById(id);
    }
    }
    window.onload = function(){
    var checkboxAllObj = $('checkBoxAll');
    checkboxAllObj.onclick = function(){
    var checkBoxArray = document.getElementsByName('checkboxName');
    if(checkboxAllObj.checked){
    for(var i = 0 ; checkBoxArray[i]; i++){
    checkBoxArray[i].checked = true;
    }
    }else{
    for(var i = 0 ; checkBoxArray[i]; i++){
    checkBoxArray[i].checked = false;
    }
    }

    };
    }
    </script>
      </head>
      
      <body>
       全选<input type="checkbox" id="checkBoxAll" name="checkboxAllName"/>
        <table style="width:800px;border: 1 solid black;">
         <%
         for(int i = 0 ; i < 15000; i++){//注释:我这里生成的是15000行的数据表格,选择速度,就是瞬间实现。我还试验了 150000 行,选择时间大概是 2.5s
          %>
         <tr style="background-color:silver;">
         <td style="width:10%;">No.<%=(i + 1) %></td>
         <td style="width:10%;"><input type="checkbox" name="checkboxName"/></td>
         <td>hello</td>
         </tr>
          <%
          }
           %>
        </table>
      </body>
    </html>
      

  12.   

    还有,楼主,对于for循环,
    第一中情况:
        
        var all = document.getElementsByName('checkboxName');
        for(var i = 0; i < all.length; i++){
            all[i].checked = true;
        }
        
    第二种情况:    var all = document.getElementsByName('checkboxName');
        for(var i = 0; all[i]; i++){
            all[i].checked = true;
        }当数据量很大的时候,第二种循环方法的速度远远高于第一种循环方法。不信你可以试验一下。--- 记得:给分哦