循环很多时,用户不能在页面进行操作(比如:点击 输入 右键),只有循环完了才能操作.
有没有方法解决这一问题?

解决方案 »

  1.   

    这个我也没遇到过,如果是ASP的话好像不会遇到这种问题的吧?等待楼下回答
      

  2.   

    用ajax做成异步的 不知道成不
      

  3.   

    我的JS只是处理当前页的数据!var userlist;//二维数组,保存全局以便后面用,不用再查数据库
    function loadUserlist() {
            var hidlist = document.getElementById("ctl00_ContentPlaceHolderMain_hidlist").value;//从页面上获取数据内容
            var hidGroup = hidlist.split("|");
            var len = hidGroup.length;
            userlist = new Array(len);
            var department = document.getElementById("userleft");//用于显示部门
            var divUsers = document.getElementById("userright");//用于显示员工
            department.innerHTML = "";
            divUsers.innerHTML = "";
            for (var i = 0; i < len; i++) {
                var users = hidGroup[i].split(",");
                var lenj = users.length;
                userlist[i] = new Array(lenj);
                for (var j = 0; j < lenj; j++) {
                    userlist[i][j] = users[j];//向二维数组赋值
                    if (j == 0)
                        department.innerHTML += "<a href=\"#\" onmouseover=\"divUserShow(" + i + ")\"><div>" + users[j] + "</div></a>";//添加部门名称
                    else
                        divUsers.innerHTML += "<a href=\"#\" onclick=\"setUser('" + userlist[i][j] + "')\"><span>" + userlist[i][j] + "</span></a>";//添加员工姓名
                }
            }
        }存储数据的hidden<input name="ctl00$ContentPlaceHolderMain$hidlist" type="hidden" id="ctl00_ContentPlaceHolderMain_hidlist" value="总部,hhh,张大天|财务部|储运部,侯培媛,匡常福,袁春平,张国基,邹剑|传媒部,测试1,测试2,何冰雁,何虎,饶杰,粟科春,谢晓丹,谢晓东,周济|经销商|批发部,陈勃裕,张明亮|医院部,刘平|质量部,李平,李述|综合部,陈颂,邓金玉,高红,管理员,李文敏,凌雁,刘斌,刘梅,实习生,项雨,杨蕾,钟晓红|客服中心,沪代表,姜寅,李艳梅,刘新宇,马一戈,叶英俊,张青|雅安公司,岑朗,陈炼,何利波,李铭,李智,李忠,卢婷,吕剑,石谊,孙小燕,王娟,杨芮,叶春育,张宁,赵尧|营销中心,李辉,刘洁|四川商务部,张强|成都医院二组,段洪波,韩高,罗桂花,杨军,张忠波,钟美华,朱杨|成都医院三组,杜小林,何惠娟,余明亮,张大川,周昌荣|成都医院四组,蒋会兰,张莉|成都医院一组,程艳,黄芳,廖丽娅,隆顺波,游学东,曾凤英,翟增会,张天茂|客服中心八组|客服中心二组,蔡献辉,谌帆,李新景,王高亚,赵爱华|客服中心九组,蔡仁杰,纪飞,贾笑寒,马震,武媛媛,颜丽|客服中心六组,蹇劼|客服中心七组|客服中心三组,寇霞,李伟,钱雪梅,任婧,石张琳,唐满华,翁慎,杨凯,朱秀鹏|客服中心十组|客服中心四组,曹霞,龚红,涂春燕,姚云芯,周波|客服中心五组,雷丽君|客服中心一组,李晶晶,李梅,刘建华,芮正义,孙梅秀,闫慧,张成立|总经理办公室,聂波,聂莹,万先级" />
      

  4.   

    内容中  用"|"分割部门   用","分割员工目的:  
    userleft这个DIV显示部门
    userright这个DIV显示员工数据量也不大,但处理起来有点卡.我将userlist保存为全局,方便后面的搜索功能员工的功能.
      

  5.   

      innerHTML +操作 频繁操作会很慢。你应该在处理完字符串以后。只做一次的innerHTML的操作。
    其次。。我觉得你的循环逻辑差不多是时间复杂度差不多N平方吧。
      

  6.   

    拆循环而且你拼接字符串有+=不慢都不行,用push
    var str[];
    str.push("xxxxx");
    str = str.join("");
      

  7.   

    因为js是单线程机制,只有当前函数完成后才能处理堆栈里的下一个任务。
    可以把循环拆开,用setTimeout或者setInterval来做。假设循环体执行一次需要10ms,那setInterval的时间需要设置大于10ms,setTimeout的时间随意设,这样才能留出一点空闲把右键事件插进来js每个函数都不应该需要很长时间来运行,否则体验很不好,努力拆吧