Javascript responsiveslides.js-为每张幻灯片指定特定的超时

Javascript responsiveslides.js-为每张幻灯片指定特定的超时,javascript,jquery,timeout,responsive-slides,Javascript,Jquery,Timeout,Responsive Slides,我用responsiveslides.js创建了一个滑块。它包含5张不同的图像幻灯片 我通常可以指定一个超时,例如4000毫秒,但它将被指定给滑块的每个图像 我想为每张图像幻灯片指定不同的超时时间。 例如: slide 1: timeout = 10000 slide 2: timeout = 2000 slide 3: timeout = 4000 slide 4: timeout = 4000 slide 5: timeout = 2000 我怎样才能得到呢?可能吗? 非常感谢你的帮助,也

我用responsiveslides.js创建了一个滑块。它包含5张不同的图像幻灯片

我通常可以指定一个超时,例如4000毫秒,但它将被指定给滑块的每个图像

我想为每张图像幻灯片指定不同的超时时间。 例如:

slide 1: timeout = 10000
slide 2: timeout = 2000
slide 3: timeout = 4000
slide 4: timeout = 4000
slide 5: timeout = 2000
我怎样才能得到呢?可能吗? 非常感谢你的帮助,也很抱歉我的英语不好

我按照Timctran的建议编辑了代码,但我做错了什么。 你能帮我找出代码中的错误吗


我试着按照你的建议修改代码。我没有javascript代码方面的经验,所以我做了一些错误的事情,滑块不再工作,所以我恢复到旧版本。下面是我如何修改代码的:

 // Array to enter timeout values.
        var desiredTimeouts = [10000, 2000, 4000, 4000, 2000];
    // Auto cycle
    if (settings.auto) {
        startCycle = function (i) {
            rotate = setTimeout(function () {
          // Clear the event queue
          $slide.stop(true, true);

          var idx = index + 1 < length ? index + 1 : 0;

          // Remove active state and set new if pager is set
          if (settings.pager || settings.manualControls) {
            selectTab(idx);
          }

          slideTo(idx);
        startCycle(index);
    }, desiredTimeout[i]);
};

      // Init cycle
      startCycle(index);
    }

    // Restarting cycle
    restartCycle = function () {
      if (settings.auto) {
        // Stop
        clearTimeout(rotate);
        // Restart
        startCycle(index);
      }
    };
//用于输入超时值的数组。
var DesiredTimeout=[10000,2000,4000,4000,2000];
//自动循环
if(settings.auto){
开始循环=功能(i){
旋转=设置超时(函数(){
//清除事件队列
$slide.stop(true,true);
var idx=指数+1<长度?指数+1:0;
//如果设置了寻呼机,则删除活动状态并设置新
if(settings.pager | | settings.manualControls){
选择标签(idx);
}
slideTo(idx);
起始周期(指数);
},期望超时[i]);
};
//初始循环
起始周期(指数);
}
//重新启动循环
restartCycle=函数(){
if(settings.auto){
//停止
清除超时(旋转);
//重新启动
起始周期(指数);
}
};

如果您能帮我修改代码,我们将不胜感激。谢谢

responsiveslides.js
中有一个名为
旋转
(第232行)的函数。在代码的这一部分中,进行您在此处看到的任何更改:

// Array to enter timeout values.
var desiredTimeouts = [10000, 2000, 4000, 4000, 2000];
// Auto cycle
if (settings.auto) {
  startCycle = function (i) {
    rotate = setTimeout(function () {
      // Clear the event queue
      ...
      slideTo(idx);
      startCycle(index);
    }, desiredTimeout[i]);
  };
  // Init cycle
  startCycle(index);
}
...
     clearTimeout(rotate);
     startCycle(index);
...
     clearTimeout(rotate);
对脚本所做更改的摘要:

  • 添加包含
    所需超时的行
  • setInterval
    更改为
    setTimeout
  • 在函数末尾添加对
    startCycle
    的调用
  • clearInterval
    的两个实例更改为
    clearTimeout
  • 使
    索引
    作为
    startCycle
    的参数调用

  • 多亏了Timctran,我才有了最终的解决方案

    打开responsiveslides.js文件并转到第227行(responsiveslides.js版本1.54)

    使用下面的代码更正现有代码。 在var desiredTimeout中插入所需的超时,用逗号分隔

    // Array to enter timeout values.
            var desiredTimeout = [10000, 4500, 4500, 4500];
    
        // Auto cycle
        if (settings.auto) {
            startCycle = function (i) {
                rotate = setTimeout(function () {
                    // Clear the event queue
                    $slide.stop(true, true);
    
                    var idx = index + 1 < length ? index + 1 : 0;
    
                    // Remove active state and set new if pager is set
                    if (settings.pager || settings.manualControls) {
                        selectTab(idx);
                    }
    
              slideTo(idx);
              startCycle(index);
              }, desiredTimeout[i]);
            };
    
          // Init cycle
          startCycle(index);
        }
    
        // Restarting cycle
        restartCycle = function () {
          if (settings.auto) {
            // Stop
            clearTimeout(rotate);
            // Restart
            startCycle(index);
          }
        };
    
        // Pause on hover
        if (settings.pause) {
          $this.hover(function () {
            clearTimeout(rotate);
          }, function () {
            restartCycle();
          });
        }
    
    //用于输入超时值的数组。
    var desiredTimeout=[10000,4500,4500,4500];
    //自动循环
    if(settings.auto){
    开始循环=功能(i){
    旋转=设置超时(函数(){
    //清除事件队列
    $slide.stop(true,true);
    var idx=指数+1<长度?指数+1:0;
    //如果设置了寻呼机,则删除活动状态并设置新
    if(settings.pager | | settings.manualControls){
    选择标签(idx);
    }
    slideTo(idx);
    起始周期(指数);
    },期望超时[i]);
    };
    //初始循环
    起始周期(指数);
    }
    //重新启动循环
    restartCycle=函数(){
    if(settings.auto){
    //停止
    清除超时(旋转);
    //重新启动
    起始周期(指数);
    }
    };
    //悬停
    如果(设置。暂停){
    $this.hover(函数(){
    清除超时(旋转);
    },函数(){
    重启循环();
    });
    }
    
    我的回答对你有帮助吗?当我测试它时,它工作了。我试着按照你的建议修改代码。我没有javascript代码方面的经验,所以我做了一些错误的事情,滑块不再工作,所以我恢复到旧版本。我在第一个问题中编写了更改后的代码。您定义了DesiredTimeout(带s),但后来引用了单数。因此,将desiredTimeout[i]更改为desiredTimeout[i]。在您上面提到的部分之后,需要更改额外的clearInterval。我已经添加了必要的更改,希望一个简单的替代品将为您工作。非常感谢!现在一切正常。我在下面添加了完整的代码。也许你可以投票认为我的答案对你有帮助。它基本上是完整的代码,只是为了清晰起见而缩短了。我试着按照你的建议修改代码。我没有javascript代码方面的经验,所以我做了一些错误的事情,滑块不再工作,所以我恢复到旧版本。我在第一个问题中写了修改后的代码。4年后,这正是我想要的。先生,你真是个笨蛋!