暂停JS向下执行

JavaScript011

暂停JS向下执行,第1张

其实我们可以这样想:浏览器是单线程的,那么我们只要在暂停的地方做三秒其他的事情不就达到了暂停的效果吗。

试试这个:

1. //js暂停函数

2. function Pause(obj,iMinSecond){

3.if (window.eventList==null) window.eventList=new Array()

4.var ind=-1

5.for (var i=0i<window.eventList.lengthi++){

6.if (window.eventList[i]==null) {

7. window.eventList[i]=obj

8. ind=i

9. break

10. }

11. }

12.if (ind==-1){

13.ind=window.eventList.length

14.window.eventList[ind]=obj

15.}

16. setTimeout("GoOn(" + ind + ")",iMinSecond)

17. }

18.

19. //js继续函数

20. function GoOn(ind){

21. var obj=window.eventList[ind]

22. window.eventList[ind]=null

23. if (obj.NextStep) obj.NextStep()

24. else obj()

25. }

//js暂停函数

function Pause(obj,iMinSecond){

if (window.eventList==null) window.eventList=new Array()

var ind=-1

for (var i=0i<window.eventList.lengthi++){

if (window.eventList[i]==null) {

window.eventList[i]=obj

ind=i

break

}

}

if (ind==-1){

ind=window.eventList.length

window.eventList[ind]=obj

}

setTimeout("GoOn(" + ind + ")",iMinSecond)

}

//js继续函数

function GoOn(ind){

var obj=window.eventList[ind]

window.eventList[ind]=null

if (obj.NextStep) obj.NextStep()

else obj()

}

使用方法很简单:

Java代码

1. function testJsStop(){

2. alert("1")

3. Pause(this,3000)

4. this.NextStep=function(){

5. alert("2")

6. }

7. }

<script src="jquery.js"></script>

<input type="text" id="in" />

<script>

var sto

jQuery("#in").keyup(function(){

try{ clearTimeout(sto)}catch(e) {}

sto=setTimeout(myFun,3000)

}).blur(function(){

try{ clearTimeout(sto)}catch(e) {}

})

function myFun(){

alert("停留3秒了")

}

</script>

1、首先新建一个html文件,命名为test.html。

2、在test.html文件内,使用span标签创建一行文字,用于下面延时设置其颜色。

3、在test.html文件内,给span标签添加一个id属性,用于下面获得它的对象。

4、在js标签内,通过ready()方法,在页面加载成功后,执行function方法。

5、在function方法内,使用setTimeout定时器,在2秒后通过id获得span对象,使用css()方法将其文字颜色设置为红色。

6、最后在浏览器打开test.html文件,查看结果。