iOS Safari Javascript setTimeout问题

时间:2012-09-05 10:03:37

标签: javascript jquery ios safari settimeout

我遇到了javascript方法setTimeout()在移动版Safari上正确执行的问题。

我的代码如下:

function addBlock() {
  if(i < full) {
    $('#box-'+i).removeClass('empty');
    $('#box-'+i).addClass('full');
    i++;
    setTimeout(addBlock, 20);
  }
  else {
    if(fullcheck != Math.round(fullcheck)) {
      i = i++;
      $('#box-'+i).removeClass('empty');
//      $('#box-'+i).addClass('halfbox');

      $('#total-count').animate({height: barheight}, 5000);

    }
    if(usergiven) {
      $('#box-'+randbox).css('border', '1px SOLID #FF0000');  
      $('#box-'+randbox).css('background-color', '#FF0000');  
    }
  }
}

无论我使用setTimeout函数提供什么超时值,它似乎总是以相同的速度运行。

这个想法是它以比每2秒1更快的速度填充一组块(实际量应该是每秒约50秒)。

任何人都可以告诉我为什么移动版Safari没有正确执行此功能或我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

关于这个问题,有很多事情很难理解。一个是没有声明或表达式的变量数量,没有对它们应该做什么的评论(如fullcheck != Math.round(fullcheck)。WTF!?),另一个是这个代码的行为方式,而不是你希望如何表现它。

由于代码不完整且无法运行,因此只需要猜测你的意思。我猜你是说代码在现在大约两秒内完成,你希望它在五十秒内完成。

在不知道ifull的值的情况下,不可能对正确的超时进行任何计算,所以我必须猜测你做错了什么。在超时的当前速率为20ms时,您将每秒处理大约500行。如果它当前在两秒钟内运行,则表示您有4000行。如果它们应该在五十秒内填满,你必须将你的超时时间延长到500毫秒。