2015-11-06 59 views
0

一些时候,我尝试做: 点击一个按钮,睡眠,改变标签为“运行”,睡眠,改变标签“OK”Html5的jQuery的更新标签上单击事件

我有一个按钮(#runajax)与点击事件功能。 我有标签的表:

<table class="table table-bordered"> 
    <tbody> 
     <tr> 
      <td >Status Global </td> 
      <td align="center"><label id="Status">FieldToUpdate</label></td> 
     </tr> 
    </tbody> 
</table> 

的Javascript:

function setStatusRun(runType) 
{ 
    $("#Status" + runType).text("running...."); 
} 

function setStatusOK(runType) 
{ 
    $("#Status" + runType).text("OK"); 
} 

$(document).ready(function() { 
    // initialize the viewer 
    $('#runajax').click(function (event) { 
     resetStatus(); 
     setStatusRun(""); 
     sleep(3000); 
     setStatusOK(""); 
     sleep(3000); 
     event.preventDefault();  
    }); 
}); 

但我只能看到最后的更新,而不是标签的中间值。

有人可以帮助我吗?

+0

什么是'睡眠()'方法??? –

+0

我正在使用Chrome – user5023028

+0

函数sleep(毫秒)var start = new Date()。getTime(); if((new Date()。getTime() - start)> milliseconds){ break;(var i = 0; i <1e7; i ++){ if } } } – user5023028

回答

0

我身边有做了一些研究,并找出使用的setTimeout比睡眠更好的办法

setTimeout(function(), delay) 

这是拨弄我的代码:

http://jsfiddle.net/mankinchi/0nubjp88/

我在第一次尝试这样做:

setTimeout(function() { 
     setStatus("run"); 
    },3000); 
setTimeout(function() { 
     setStatus("stop"); 
    },3000); 

但得到了同样的问题,你h大道:显示最后一个,而不是中间)。

我有一些艰难的时间试图理解为什么。然后我将后面的一个更改为6000,我得到了结果。我相信这两个setTimeout都运行异步(不会等待代码完成来执行其他操作)。看看这里的更多详细信息:

Asynchronous vs synchronous execution, what does it really mean?

+0

也许我不清楚,但我的问题不是关于睡眠或超时。我只是用它来模拟一些工作,没有更多。我的问题在于标签的更新。我没有“中间”更新。 – user5023028

+0

@ user5023028再次阅读。我还提到了我与你的结果相同的原因 –