在传递参数时,如何让setInterval()从函数内部执行单击

How do I get setInterval() to execute a click from inside a function when passing a parameter?

本文关键字:函数 内部 单击 执行 setInterval 参数      更新时间:2023-09-26

我正在处理一个面向对象的内容/图像滑块。我遇到了setInterval()只运行一次的问题。我将一个字符串值传递给我的函数cn.hero('','','','','',0,0,'yes');,当它匹配时,应该会自动触发点击。

这是我的代码:

cn = {
    hero:function(r,rc,lx,rx,fx,fs,ss,auto){
        $(lx).click(...}
        if(auto.match('yes')){ setInterval($(lx).click(),7000); }
    }
}
$(function(){
    cn.hero('#reel', '#reel div', '#reel-left', '#reel-right', 'slide', 300, 500, 'yes');
}); 

如有任何帮助,我们将不胜感激,感谢

您需要一个匿名函数——您所拥有的是立即执行

if(auto.match('yes')){ 
    setInterval( function() {
        $(lx).click()
    } ,7000); 
}

当您像一样将代码传递给setInterval

setInterval($(lx).click(), 7000);

则立即执行该代码;jQuery将解析该选择器,然后立即触发click事件。

您不是在向setInterval传递函数,而是在调用函数并将其结果传递给setInterval。($(lx).click()实际上调用了click()函数。)

在代码中的适当位置尝试此操作:

setInterval(function() { $(lx).click() },7000);

这将您实际想要在匿名函数中进行的函数调用封装起来,并将该匿名函数传递给setInterval。这是一种常见的技术。

你是说你想运行setInterval,但它的代码只运行一次吗?setTimeout不是这样做的吗?

您想要使用setTimeout。未设置间隔。

https://developer.mozilla.org/en/DOM/window.setTimeout