setTimeout()函数的使用?

netscaler 2001-11-29 01:39:00
各位,请教一个问题,我用一个FOR循环,其中调用了SETTIMEOUT()函数,在setTtimeout函数返回之前循环会继续吗?我感觉没等函数返回循环就继续运行了。
程序大致如下:
for(i=0;i<100,i++){setTimeout(function1(i),500)}
我的本意是由变量i来控制画面的显示,可是结果似乎在第一次调用SETTIMEOUT函数后未等函数返回,循环就继续运行了,结果可能在第二次调用时i已经是100了,结果画面渐显的效果无法实现,画面一下就出来了,不知有什么解决办法?
...全文
195 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
netscaler 2001-11-30
  • 打赏
  • 举报
回复
谢谢各位,昨晚已经把程序基本实现了,方法和军仔的差不多,关键是函数应该递归调用,也就是循环子的放置位置,把函数放在FOR循环中达不到效果,想了一下原因,用递归实现可以保证循环子起到正确的作用,而在FOR循环中,由于SETITMEOUT函数要等一定的时间后才会执行,这时循环子已经达到最大值了,也就无法实现渐变的效果了。
feijunjun 2001-11-29
  • 打赏
  • 举报
回复
用作参考
<html>
<head>
<title> New Document </title>
<script>
var opa = 20;
var tm;
var curobj;
function Show(obj){
curobj = obj;
filterShow();}

function filterShow(){
if(curobj==null)return;
opa+=2;
if(opa==102)opa=100;
curobj.style.filter="alpha(opacity=" + opa + ",style=0)";
tm = setTimeout(filterShow,20);}

function resetFilter(obj){
curobj=null;
opa=20;
obj.style.filter="alpha(opacity=20,style=0);"}
</script>
</head>

<body>
<img src=abc.gif onmouseover="Show(this)" onmouseout="resetFilter(this)" style="filter:alpha(opacity=20,style=0)">
</body>
</html>
netscaler 2001-11-29
  • 打赏
  • 举报
回复
修改了一下程序,好了些,但还是有问题。
chinaillboy 2001-11-29
  • 打赏
  • 举报
回复
use setInterval()
xchunyu 2001-11-29
  • 打赏
  • 举报
回复
setTimeout只是在计时结束是调用一个函数.

你为什么不用一个算法来确定setTimeout的时间值呢?

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧