【问题标题】:setInterval delayssetInterval 延迟
【发布时间】:2012-07-29 23:57:06
【问题描述】:

我正在尝试执行旋转横幅(通过数组调用它)。我设置了一个间隔,但图像仅在 10 秒(10000)后显示,然后才开始旋转。我删除了数组的杂乱 HTML,但这是其余的:

var current = 0; 

var banners = new Array();
banners[0]=;
banners[1]=;
banners[2]=;
banners[3]=;

var myTimeout = setInterval("rotater()",10000);

function rotater() {
    document.getElementById("placeholderlayer").innerHTML=banners[current];
    if(current==banners.length-1){  
        current = 1;
    }else{
        current += 1;
    }
 }

window.onload = rotater();

【问题讨论】:

  • 不是您要询问的具体问题,而是值得注意的改进。 setInterval 应该传递一个直接的函数引用,而不是这样的字符串:var myTimeout = setInterval(rotater, 10000);

标签: javascript arrays setinterval banner banner-ads


【解决方案1】:
window.onload = rotater;

是正确的语法。您不想调用该函数。但是,防弹解决方案是这样的:

onload = function() {
    rotater();
    window.myTimeout = setInterval(rotater, 10000); // Never pass a string to `setInterval`.
};

ProTip™:不要使用 new Array(),使用数组文字。例如,这个:

var arr = new Array();
arr[0] = 'Hello';
arr[1] = 'world!';

应该写成:

var arr = ['Hello', 'world!'];

【讨论】:

    【解决方案2】:

    只是评论:

    代替:

    if(current==banners.length-1) {
       current = 1; 
    
    } else {
       current += 1;
    } 
    

    你可以这样做:

    current = ++current % banners.length;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 2020-09-10
      相关资源
      最近更新 更多