触发点击间隔

时间:2014-10-03 04:58:25

标签: jquery settimeout setinterval

我有JS作为

setTimeout(function() {
setInterval(function() {
    $('.home-tab-news').trigger('click');
}, 15000);
}, 5000);

setTimeout(function() {
setInterval(function() {
    $('.home-tab-project').trigger('click');
}, 15000);
}, 10000);

setTimeout(function() {
setInterval(function() {
    $('.home-tab-piechart').trigger('click');
}, 15000);
}, 15000);

我想要它做的是在一个循环中每10秒触发一次(此时它会执行此操作,但第一次的时间是关闭的吗?)

如果有人点击标签,我该如何停止过渡 - 此时,如果有人单击标签本身,则会继续发生过渡。

2 个答案:

答案 0 :(得分:2)

请参阅第一个中的15000?它意味着15,000毫秒。 10秒钟你需要放10,000个。

setTimeout(function() {
    setInterval(function() {
        $('.home-tab-news').trigger('click');
    }, 10000);
}, 10000);

至于停止它,你只需将间隔分配给var:

var interval1;

setTimeout(function() {
    interval1 = setInterval(function() {
        $('.home-tab-news').trigger('click');
    }, 10000);
}, 10000);

并在标签后点击:

clearInterval(interval1);

UPDATE:

为了清除用户单击选项卡时的间隔,您可以在所有选项卡上附加单击处理程序,并清除处理程序触发时的间隔。既然你也以编程方式触发了点击,你需要区分编程点击和手动点击,我会用旗帜来区分它;

关于时间,我建议使用变量来指示当前标签,并在移动变量时循环显示它们。

var is_manual = true;
var interval1;
var Current_Tab = 1;
var Cycle_Speed_Seconds = 1;
$(function () {
    $("#tabs").tabs();
    setTimeout(function () {
        console.log("start");
        //set a click handler to your tabs:
        $('.home-tab-news, .home-tab-project, .home-tab-piechart').click(function () {
            console.log("click");
            //check if clicked manually or automatically:
            if (is_manual == false) {
                //if automatic, clear flag and continue
                is_manual = true;
            } else if (is_manual == true) {
                //if manual, clear interval
                clearInterval(interval1);
            }

            //execute default action:
            return true;
        });
        //set the interval to swap between tabs
        interval1 = setInterval(function () {
            //indicate that the click was trigerred automatically:
            is_manual = false;
            if (Current_Tab == 1) {
                Current_Tab = 2;
                $('.home-tab-news').trigger('click');
            } else if (Current_Tab == 2) {
                Current_Tab = 3;
                $('.home-tab-project').trigger('click');
            } else if (Current_Tab == 3) {
                Current_Tab = 1;
                $('.home-tab-piechart').trigger('click');
            }

        },Cycle_Speed_Seconds* 1000);
    }, 0);
});

有点长,但我相信你理解我的观点。如果您有任何问题,请随时提出

Example

答案 1 :(得分:0)

<强>语法

的setInterval(函数,毫秒,朗)

参数值

Parameter         Description

function         Required. The function that will be executed 
milliseconds     Required. The intervals (in milliseconds) on how often to execute the code 
lang             Optional. JScript | VBScript | JavaScript 

返回值

一个整数,其中包含已设置的计时器的ID值。将此值与clearInterval()方法一起使用可取消计时器。

示例: -

var myVar = setInterval(function(){myTimer()}, 10000); //// For 10 seconds its 10 * 1000

function myTimer() {
    var d = new Date();
    var t = d.toLocaleTimeString();
     document.getElementById("demo").innerHTML = t;
}

function myStopFunction() {
    clearInterval(myVar);
}