Mar*_*que 70 javascript jquery
我需要执行一段JavaScript代码,每个2000毫秒.
setTimeout('moveItem()',2000)
Run Code Online (Sandbox Code Playgroud)
以上将在2000毫秒后执行一个函数,但不会再执行它.
所以在我的moveItem函数里面我有:
function moveItem() {
jQuery(".stripTransmitter ul li a").trigger('click');
setInterval('moverItem()',2000);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为我想执行触发器单击jQuery一段代码,每个间隔2000毫秒,但现在它一直被调用,脚本需要被中断.除此之外,我觉得这是非常差的质量编码......你们怎么解决这个问题?
Mig*_*ura 185
请注意,setTimeout并setInterval有很大的不同的功能:
setTimeout将在超时后执行一次代码.setInterval将以提供的超时间隔永久执行代码.这两个函数都返回一个计时器ID,您可以使用它来中止超时.您所要做的就是将该值存储在变量中,并将其用作参数clearTimeout(tid)或clearInterval(tid)分别.
因此,根据您的目的,您有两个有效的选择:
// set timeout
var tid = setTimeout(mycode, 2000);
function mycode() {
// do some stuff...
tid = setTimeout(mycode, 2000); // repeat myself
}
function abortTimer() { // to be called when you want to stop the timer
clearTimeout(tid);
}
Run Code Online (Sandbox Code Playgroud)
要么
// set interval
var tid = setInterval(mycode, 2000);
function mycode() {
// do some stuff...
// no need to recall the function (it's an interval, it'll loop forever)
}
function abortTimer() { // to be called when you want to stop the timer
clearInterval(tid);
}
Run Code Online (Sandbox Code Playgroud)
两者都是实现同样目标的非常常见的方法.
setInterval(moveItem, 2000);
Run Code Online (Sandbox Code Playgroud)
是每2秒执行一次功能的方法moveItem.您的代码中的主要问题是您在setInterval回调内部而不是在回调之外进行调用.如果我理解你要做什么,你可以使用这个:
function moveItem() {
jQuery('.stripTransmitter ul li a').trigger('click');
}
setInterval(moveItem, 2000);
Run Code Online (Sandbox Code Playgroud)
注意:不要传递字符串setTimeout或setInterval- 最佳做法是传递匿名函数或函数标识符(如上所述).另外,请注意不要混用单引号和双引号.选择一个并坚持下去.
| 归档时间: |
|
| 查看次数: |
176387 次 |
| 最近记录: |