我有一个未知值的变量,它将是一个整数。为此,我们说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次运行this.appendEnd(),因为a === 3
。
我该怎么做?
答案 0 :(得分:6)
实例化一个计数器变量,每次调用anim()时都会递增。当
counter % a === 0
然后你运行this.appendEnd()
答案 1 :(得分:1)
首先,您需要一个递增变量来计算函数被调用的次数。例如,用这个开始你的功能:
var me = arguments.callee;
me.timesCalled = (me.timesCalled || 0)+1;
现在,您可以检查该计数器。要看到事情发生了#34;每X次",只需检查X的模数是否为0:
if( me.timesCalled % a == 0) { /* do something */ }
你有它!
答案 2 :(得分:1)
创建第二个变量,该变量保持当前计数,然后包含您希望每三次迭代的调用
if(counter % a == 0) {
//code you want called
}
答案 3 :(得分:0)
你应该检查你的计数器是否大于0,否则你的函数appendEnd
将在第一次被解雇:
if (counter > 0 && counter % a == 0) { ... }
以下是完整的代码:
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;
}
答案 4 :(得分:0)
这是封装计数器的方法,但是对“a”使用全局变量:
var a = 3;
function anim(){
// Run the usual code here
// ...
if (++anim.counter % a === 0) {
// Run the special code here
// ...
}
}
// Initialize static properties.
anim.counter = 0;
这是一种封装“a”变量的方法,将其称为“频率”:
function anim(){
// Run the usual code here
// ...
if (++anim.counter % anim.frequency === 0) {
// Run the special code here
// ...
}
}
// Initialize static properties.
anim.counter = 0;
anim.frequency = 1;
然后在第一次调用anim()之前设置所需的频率值:
anim.frequency = 3;