我有这个jQuery函数,每6,5秒执行一个slideHighs
函数:
initialId=1;
function autoSlider(){
setInterval(function() {
autoId=initialId++;
slideHighs(autoId);
}, 6500);
}
我无法解决2个问题:
加载页面时,我需要此功能才能开始执行第一个
循环(使用autoId val = 1
)而不等待6,500毫秒
开始,然后增加到2,3等...每6,500毫秒。我的意思是,避免前6,500间隔。
变量限制为4,当达到时,值必须重新开始为1.
答案 0 :(得分:2)
我相信这是你正在寻找的。 p>
initialId = 0;
function autoSlider(){
// use var keyword to prevent declaring the variable on the global namespace
var autoId = initialId++;
slideHighs(autoId);
if ( initialId == 4 ) {
initialId = 1;
}
}
要在加载页面时调用autoSlider()
,请执行以下操作:
$(document).ready( function() {
autoSlider();
setInterval(autoSlider, 6500);
});
或者,使用$(document).ready()的快捷方法,如下所示:
$(function() {
autoSlider();
setInterval(autoSlider, 6500);
});
答案 1 :(得分:1)
试试这个:您可以先使用setInterval
调用位于initialId = 1
内的相同代码,然后在setInterval
内调查是否initialId
值并重置。
var initialId = 1;
//call function outside interval first
autoId=initialId;
slideHighs(autoId);
function autoSlider(){
setInterval(function() {
autoId=initialId++;
slideHighs(autoId);
//reset variable
if(initialId>4)
initialId =0;
}, 6500);
}
答案 2 :(得分:1)
initialId = 1;
(function(){ //this will solve first problem
slideHighs(initialId);
})();
function autoSlider(){
setInterval(function() {
if(initialId == 4) initialId =1; //2nd resolve
autoId=initialId++;
slideHighs(autoId);
}, 6500);
}
答案 3 :(得分:1)
不要使用匿名功能。给它一个名字并在你准备好的dom中使用它:
var initialId = 0; //0 so it prevent the first call to be `2`.
function doSomething() {
var autoId=initialId++;
slideHighs(autoId);
}
$(doSomething);//Dom ready shortcut
setInterval(doSomething, 6500);
至于你的第二个问题,只需使用一个条件:
function doSomething() {
initialId++;
if(initialId > 4) initialId = 1;
var autoId=initialId;
slideHighs(autoId);
}
注意:autoId
非常无用......