【问题标题】:javascript settimeout not working inside recursive functionjavascript settimeout 在递归函数中不起作用
【发布时间】:2014-09-09 10:46:55
【问题描述】:

我的脚本如下,它应该在 div 内重放鼠标图像,但 settimeout 不起作用,控制台也没有错误:

function play(data, value) {
    var data = data;

    function run() {
        var nowTime;
        var newdata = data.splice(0, 1); // after splice, data will be auto updated
        if (newdata.length == 1) {
            nowTime = newdata[0][6];
            var timer = setTimeout(function() {
                if (newdata[0][3] == '14') {
                    replay(newdata[0][0], newdata[0][1]);
                }
                preTime = nowTime;
                // continue run next replay
                run();

            }, nowTime - preTime);
        }
    }
    run();
}

请帮助我。如何解决这个问题。

提前致谢

【问题讨论】:

  • run() 的范围仅在 play() 方法内。你不能在 play() 之外调用 run 方法
  • 是的,我粘贴错了..但它仍然无法正常工作
  • 使用 setInterval() 比重复使用 setTimeout() 更好
  • @AnoopJoshi 我是 javascript 新手,能否提供一些示例来使用 setinterval 进行相同的鼠标图像回放

标签: javascript jquery recursion settimeout


【解决方案1】:

试试这个

var newdata;
var nowTime;
var preTime;
function play(data, value)
{
  newdata= data.splice( 0, 1 ); // after splice, data will be auto updated

  if ( newdata.length ==  1 ) {
        nowTime = newdata[0][6];
        var timer = setTimeout("timer();",nowTime - preTime );   
  }
}
function timer()
{
  if(newdata[0][3] == '14'){
     replay( newdata[0][0], newdata[0][1]);
  }
  preTime = nowTime;
  play();
}
play();

【讨论】:

  • javascript 默认情况下不存在拼接 @anoop joshi 通过一些原型将其添加到所有对象
猜你喜欢
  • 2011-12-31
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-02-12
  • 2014-06-04
  • 2020-10-22
  • 1970-01-01
相关资源
最近更新 更多