2014-09-09 2 views
0

Моего сценария заключается в следующем, который должен воспроизводить изображение мыши внутри DIV, но SetTimeout не работает, и нет никаких ошибок в консоли также:Javascript 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(); 
} 

Пожалуйста, помогите мне. Как решить эту проблему.

заранее спасибо

+3

Объем бега() только внутри метода воспроизведения(). Вы не можете вызвать метод run вне игры() –

+0

yah, это право Я вставлял его неправильно .. но все же его не работает –

+0

Его лучше использовать setInterval(), чем с помощью 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(); 
+0

спасибо, что ответ попробует –

+0

сплайс не определен error –

+0

сплайсинг по умолчанию не существует в javascript @anoop joshi добавлен это некоторыми прототипами для всех объектов – elia07