首页 新闻 会员 周边 捐助

js延迟顺序加载的问题

0
悬赏园豆:50 [待解决问题]

现在项目中遇到一个问题。就是在前台页面顺序延迟显示后台发送的数据。
比如前台是一个表格,点击前台按钮后,一次获得table上该显示的所有随机序号。
目前的问题不能让这些选择的序号顺序延迟显示。
这个问题类似于在表格中随机点名。
代码不完整:



<table>
<tr><td>11</td><td>12</td><td>13</td><td>14</td></tr>
<tr><td>21</td><td>22</td><td>23</td><td>24</td></tr>
<tr><td>31</td><td>32</td><td>33</td><td>34</td></tr>
<tr><td>41</td><td>42</td><td>43</td><td>44</td></tr>
</table>
<input type="button" value="顺序延迟加载" id="btnRun" />
<script>
$(function(){
$("#btnRun").click(function(){
// rndArray假如是产生的一个瞬间顺序数组,用来控制表格的td变色
var rndArray=[3,7,11,1,12,15];
for(var i=0;i<rndArray.length;i++){
setTimeout(function(){
$("table td").eq(i).addClass("test1").siblings().removeClass("test1");
},1000);
}
})
});
</script>

 

 

今天查阅了一下js是单线程执行的,setTimeout("code()",delay)是在delay后将code插入到代码中。
因此这样肯定无法实现我要的功能。不知道有什么好方法可以实现这个功能,
以前在学习视频的时候看到过这个表格随机点名的效果。

求大神指点该怎么弄。

Hey,It's me.的主页 Hey,It's me. | 初学一级 | 园豆:154
提问于:2013-09-07 16:53
< >
分享
所有回答(4)
0

闭包,加参数

$(function(){

$("#btnRun").click(function(){

// rndArray假如是产生的一个瞬间顺序数组,用来控制表格的td变色

var rndArray=[3,7,11,1,12,15];

for(var i=0;i<rndArray.length;i++){

setTimeout(function(e){

$("table td").eq(e).addClass("test1").siblings().removeClass("test1");

},1000);

}

})

});

</script>

2J | 园豆:159 (初学一级) | 2013-09-08 07:24
0

没明白?

angelshelter | 园豆:9914 (大侠五级) | 2013-09-08 16:21
0

自己解决了这个问题。采用的是ajax同步请求,在服务端sleep,客户端等待服务端结果,就实现了sleep的功能。

Hey,It's me. | 园豆:154 (初学一级) | 2013-09-15 19:00
0

亲 看清楚  $("table td").eq(i).addClass("test1").siblings().removeClass("test1");
当前对象 add  又 remove  到最后 显示的结果自然是一个都没有选中

我更改了下

$(function(){
$("#btnRun").click(function(){

/*我新加的*/$("table td").removeClass("test1")
// rndArray假如是产生的一个瞬间顺序数组,用来控制表格的td变色
var rndArray=[3,7,11,1,12,15];
for(var i=0;i<rndArray.length;i++){
setTimeout(function(){
$("table td").eq(i).addClass("test1");
},1000);
}
})
});

王那个锋啊 | 园豆:311 (菜鸟二级) | 2013-11-08 11:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册