Javascript每x次迭代在循环中运行一个函数
我有一个未知值的变量,它将是一个整数。为此,让我们假设Javascript每x次迭代在循环中运行一个函数,javascript,Javascript,我有一个未知值的变量,它将是一个整数。为此,让我们假设var a=3 我有一个连续调用的函数: var a = 3; function anim() { left = parseInt(galleryInner.css('left'), 10); if(Math.abs(left) >= (galleryItem.length * galleryItem.width())){ galleryInner.css('left', 0
var a=3代码>
我有一个连续调用的函数:
var a = 3;
function anim() {
left = parseInt(galleryInner.css('left'), 10);
if(Math.abs(left) >= (galleryItem.length * galleryItem.width())){
galleryInner.css('left', 0);
}
galleryInner.animate({left: '-=20' }, 200, anim);
that.appendEnd();
}
我只希望每3次运行一次这个.appendEnd(),因为a==3
如何执行此操作?实例化每次调用anim()时递增的计数器变量。什么时候
counter % a === 0
然后运行这个.appendEnd()首先需要一个递增变量来计算函数被调用的次数。例如,使用以下命令启动函数:
var me = arguments.callee;
me.timesCalled = (me.timesCalled || 0)+1;
现在,你可以检查那个柜台了。要查看“每X次”发生的情况,只需检查X的模数是否为0:
if( me.timesCalled % a == 0) { /* do something */ }
就在这里 创建第二个保持当前计数的变量,然后将您只希望每三次迭代使用的调用包装起来
if(counter % a == 0) {
//code you want called
}
您应该检查计数器是否大于0,否则您的函数appendEnd
将在第一次启动:
if (counter > 0 && counter % a == 0) { ... }
anim.frequency = 3;
以下是完整的代码:
var appendEndExecutedTimes = 0;
function anim(){
left = parseInt(galleryInner.css('left'), 10);
if(Math.abs(left) >= (galleryItem.length * galleryItem.width())){
galleryInner.css('left', 0);
}
galleryInner.animate({left: '-=20' }, 200, anim);
if (appendEndExecutedTimes > 0 && appendEndExecutedTimes % a === 0) {
that.appendEnd();
}
appendEndExecutedTimes += 1;
}
下面是一种封装计数器的方法,但使用全局变量表示“a”:
这里有一种方法也封装了“a”变量,称之为“频率”:
然后在第一次调用anim()之前设置所需的频率值:
if (counter > 0 && counter % a == 0) { ... }
anim.frequency = 3;
在这段代码中没有看到var a
。这段代码中,我打字太慢了。