问题描述
点击开始分析之后,去数据库查询数据,可能要10s的时间。我在页面上加了一个div,div里面有提示用户请等待和一张动态图片,div的dispaly属性为none;我点击开始分析之后,把div的dispaly属性设为block,然后去执行耗时很长的程序,执行完之后又把div的dispaly属性设为none。我点了按钮之后,页面就像卡死了一样,什么都点不了,提示用户等待的信息也没有出来,过了10s程序执行完了,页面才从卡死的状态恢复回来。更神奇的是,我在开始分析前加一个弹出确定/取消框,把提示等待信息放在提示框外面,提示信息都可以正常显示,一点确定,连动态图片都卡住不动了。请教大神们,我想让div显示出来,问题出在哪里?html代码:<divid="Waiting"style="display:none;width:99%;height:99%;float:left;z-index:11;position:absolute;top:30%;right:0px;left:10%;bottom:0px;vertical-align:middle;text-align:center;"><imgid="Waiting_Img"src="../../../../images/Loading2.gif"/><br><spanid="Waiting_Span"style="color:blue;font-size:14px;">请稍等</span></div>
JS代码:document.getElementById("Waiting").style.display="block";if(confirm("核对信息无误,确定开始分析?")){//执行耗时程序的代码……………………………………}document.getElementById("Waiting").style.display="none";
解决方案
解决方案二:
耗时多少秒,你无法预知,还是一视同仁,都显示一个等待界面吧,大不了一闪而过
解决方案三:
耗时无法预知“都显示一个等待界面吧”,意思是跳转到同一个页面吗,那样不行,不能刷新整个页面的。
解决方案四:
。。我都忘了怎么写这样的CSS了
解决方案五:
引用3楼jiaoshiyao的回复:
。。我都忘了怎么写这样的CSS了
我也忘记了
解决方案六:
你是用线程来处理还是直接事件来处理呀?如果不是线程你一定弹不出窗口的,直接页面卡死在那的!
解决方案七:
可以用AJAX请求数据发送请求之前显示遮盖层当AJAX请求成功后再在success里面将遮盖层隐藏掉
解决方案八:
引用5楼jrl5365的回复:
你是用线程来处理还是直接事件来处理呀?如果不是线程你一定弹不出窗口的,直接页面卡死在那的!
我在事件里面处理的。多线程。。。。。。。没用过,有没有什么好的例子。
解决方案九:
引用6楼kxm_2012的回复:
可以用AJAX请求数据发送请求之前显示遮盖层当AJAX请求成功后再在success里面将遮盖层隐藏掉
我就是用的ajaxdocument.getElementById("Waiting").style.display="block";if(confirm("核对信息无误,确定开始分析?")){mygrid.forEachRow(function(id){varResult=Techrecord.Analysis(id);//Techrecord是一个js类,Analysis方法就是用ajax去后台执行查询mygrid.cells(id,5).setValue(Result);});}document.getElementById("Waiting").style.display="none";
解决方案十:
你要把ajax设成异步,然后在ajax的成功或失败回调函数里添加上隐藏loading框的代码
解决方案十一:
向大家学习了