BuiltyRose 2012-03-17 23:14
浏览 209
已采纳

JS 简单计时问题

function coffee(){

var a= document.getElementById("cover").style.width;
var b= a.substring(0,3);//substring方法截取两个索引号之间的字符串
var picwidth=Number(b);

while(picwidth>0){
var i=0;
picwidth=picwidth-50;

var t=setTimeout("changeWidth(picwidth)",50);

}

}

function changeWidth(a){
document.getElementById("cover").style.width=a;
}

就是得不出正确的结果
我都试了一下 var t=setTimeout("changeWidth(picwidth)",50); 是这句话有问题。
希望的效果是触发coffee方法 每50ms id为cover的div的长度就变化一下 求高手指导

我知道jquery可以实现而且很简单,但是我要用纯js代码来实现

谢谢各位高手先

  • 写回答

1条回答 默认 最新

  • suziwen 2012-03-17 23:45
    关注

    1.[quote]setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。[/quote]
    while循环,是不会等setTimeout执行完才执行下一次循环的

    2.
    因此你要让你的代码每50ms执行一次,那就得这样写

    setInterval(function(){},50);

    [code="js"]

    var picwidth= 0;
    function coffee(){

    var a= document.getElementById("cover").style.width;
    var b= a.substring(0,3);//substring方法截取两个索引号之间的字符串
    picwidth=Number(b);

    var t=setInterval(function(){
    if(picwidth <=0){
    clearInterval(t);
    }
    changeWidth(picwidth);
    picwidth=picwidth-50;
    },50);

    }

    function changeWidth(a){
    document.getElementById("cover").style.width=a;
    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题