JS循环太多时会卡住 循环很多时,用户不能在页面进行操作(比如:点击 输入 右键),只有循环完了才能操作.有没有方法解决这一问题? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 这个我也没遇到过,如果是ASP的话好像不会遇到这种问题的吧?等待楼下回答 用ajax做成异步的 不知道成不 我的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,何冰雁,何虎,饶杰,粟科春,谢晓丹,谢晓东,周济|经销商|批发部,陈勃裕,张明亮|医院部,刘平|质量部,李平,李述|综合部,陈颂,邓金玉,高红,管理员,李文敏,凌雁,刘斌,刘梅,实习生,项雨,杨蕾,钟晓红|客服中心,沪代表,姜寅,李艳梅,刘新宇,马一戈,叶英俊,张青|雅安公司,岑朗,陈炼,何利波,李铭,李智,李忠,卢婷,吕剑,石谊,孙小燕,王娟,杨芮,叶春育,张宁,赵尧|营销中心,李辉,刘洁|四川商务部,张强|成都医院二组,段洪波,韩高,罗桂花,杨军,张忠波,钟美华,朱杨|成都医院三组,杜小林,何惠娟,余明亮,张大川,周昌荣|成都医院四组,蒋会兰,张莉|成都医院一组,程艳,黄芳,廖丽娅,隆顺波,游学东,曾凤英,翟增会,张天茂|客服中心八组|客服中心二组,蔡献辉,谌帆,李新景,王高亚,赵爱华|客服中心九组,蔡仁杰,纪飞,贾笑寒,马震,武媛媛,颜丽|客服中心六组,蹇劼|客服中心七组|客服中心三组,寇霞,李伟,钱雪梅,任婧,石张琳,唐满华,翁慎,杨凯,朱秀鹏|客服中心十组|客服中心四组,曹霞,龚红,涂春燕,姚云芯,周波|客服中心五组,雷丽君|客服中心一组,李晶晶,李梅,刘建华,芮正义,孙梅秀,闫慧,张成立|总经理办公室,聂波,聂莹,万先级" /> 内容中 用"|"分割部门 用","分割员工目的: userleft这个DIV显示部门userright这个DIV显示员工数据量也不大,但处理起来有点卡.我将userlist保存为全局,方便后面的搜索功能员工的功能. innerHTML +操作 频繁操作会很慢。你应该在处理完字符串以后。只做一次的innerHTML的操作。其次。。我觉得你的循环逻辑差不多是时间复杂度差不多N平方吧。 拆循环而且你拼接字符串有+=不慢都不行,用pushvar str[];str.push("xxxxx");str = str.join(""); 因为js是单线程机制,只有当前函数完成后才能处理堆栈里的下一个任务。可以把循环拆开,用setTimeout或者setInterval来做。假设循环体执行一次需要10ms,那setInterval的时间需要设置大于10ms,setTimeout的时间随意设,这样才能留出一点空闲把右键事件插进来js每个函数都不应该需要很长时间来运行,否则体验很不好,努力拆吧 在已知cookie的情况下,怎么在另一机子上绕过验证直接登录? Js 像后台传值 jquery 与datalist 事件绑定? 关于COLSPAN问题 拖动条问题,在线等,急!急!急!,分不够在加,顶的都有分 预定义事件 netscape相关问题 如何做到点击按钮,在当前窗口转到所需网页? 如何判断某个输入框的数据是否数字? 网站前台做得不熟,问下,这个工具条,是要自己实现的,还是有什么现成的第三方代码? 动态单选框 delete 变量返回false
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,何冰雁,何虎,饶杰,粟科春,谢晓丹,谢晓东,周济|经销商|批发部,陈勃裕,张明亮|医院部,刘平|质量部,李平,李述|综合部,陈颂,邓金玉,高红,管理员,李文敏,凌雁,刘斌,刘梅,实习生,项雨,杨蕾,钟晓红|客服中心,沪代表,姜寅,李艳梅,刘新宇,马一戈,叶英俊,张青|雅安公司,岑朗,陈炼,何利波,李铭,李智,李忠,卢婷,吕剑,石谊,孙小燕,王娟,杨芮,叶春育,张宁,赵尧|营销中心,李辉,刘洁|四川商务部,张强|成都医院二组,段洪波,韩高,罗桂花,杨军,张忠波,钟美华,朱杨|成都医院三组,杜小林,何惠娟,余明亮,张大川,周昌荣|成都医院四组,蒋会兰,张莉|成都医院一组,程艳,黄芳,廖丽娅,隆顺波,游学东,曾凤英,翟增会,张天茂|客服中心八组|客服中心二组,蔡献辉,谌帆,李新景,王高亚,赵爱华|客服中心九组,蔡仁杰,纪飞,贾笑寒,马震,武媛媛,颜丽|客服中心六组,蹇劼|客服中心七组|客服中心三组,寇霞,李伟,钱雪梅,任婧,石张琳,唐满华,翁慎,杨凯,朱秀鹏|客服中心十组|客服中心四组,曹霞,龚红,涂春燕,姚云芯,周波|客服中心五组,雷丽君|客服中心一组,李晶晶,李梅,刘建华,芮正义,孙梅秀,闫慧,张成立|总经理办公室,聂波,聂莹,万先级" />
userleft这个DIV显示部门
userright这个DIV显示员工数据量也不大,但处理起来有点卡.我将userlist保存为全局,方便后面的搜索功能员工的功能.
其次。。我觉得你的循环逻辑差不多是时间复杂度差不多N平方吧。
var str[];
str.push("xxxxx");
str = str.join("");
可以把循环拆开,用setTimeout或者setInterval来做。假设循环体执行一次需要10ms,那setInterval的时间需要设置大于10ms,setTimeout的时间随意设,这样才能留出一点空闲把右键事件插进来js每个函数都不应该需要很长时间来运行,否则体验很不好,努力拆吧