每1分钟重复一次这个功能?

时间:2015-06-04 10:06:37

标签: javascript html ajax function onclick

我用onclick方法调用一个带有参数的函数我想要做的是我希望这个函数每1分钟重复一次这里是html代码: 我在everyclick上调用一个函数,其中一些参数为id id获取lat longs,并且它在map中绘制,我已经完成了所有工作,除了我得到的数据保持从后端接收所以我想要做的是,因为我点击了href我想要那个特定的要发送的ID并且仅保留接收该特定id的数据,当我单击第二个时,应该停止第一个并启动另一个。

<html>
</head>
<body>
    <a href="#" onclick="todo(1)"></a>
    <a href="#" onclick="todo(2)"></a>
</body>
</html>

的javascript:

function todo(id)
{
    $.ajax({
            type:"GET",
            url: "example?value="+id,
            dataType:"text",
            success: function(data) 
            {
             //parsing;
            });
}

5 个答案:

答案 0 :(得分:1)

试试这个......

使用setInterval每1分钟调用一次函数,并在调用函数“test”时自动点击“触发”功能

    <html>
    </head>
    <body>
        <a href="#" class="todo" onclick="todo(1)">sdsd</a>
   <a href="#" class="todo" onclick="todo(2)">sdsd</a>
    </body>
    </html>
    function todo(id)
    {
        $.ajax({
                type:"GET",
                url: "example?value="+id,
                dataType:"text",
                success: function(data) 
                {
                 //parsing;
                });
    }
    function test() {
    $(".todo").trigger("click");
    }
    var refreshId = setInterval(test, 60000);

答案 1 :(得分:1)

您只需在setInterval功能中拨打todo即可拨打不同的电话,更改您的功能:

function todo(id) {
  setInterval(function() {
    /*$.ajax({
        type: "GET",
        url: "example?value=" + id,
        dataType: "text",
        success: function(data) {
          //parsing;
        });*/
    console.log(id);
  }, 1000);
}
<a href="#" onclick="todo(1)">link1</a>
<a href="#" onclick="todo(2)">link2</a>

我在这里仅使用1000毫秒进行测试,您只需将其更改为60000以满足您的需求,您可以在控制台中查看结果。

注意:

请注意,对于每次点击,您都会触发新的setInterval(),因此您必须在第一次setInterval()之后停用点击事件以避免此问题。

答案 2 :(得分:1)

目前尚不清楚您的问题和评论可能需要哪些约束,但也许是这样的?

如果出现ajax错误,将停止重复。

单击按钮将取消当前重复并立即开始新的重复(1-4)。正在进行的请求不会被取消,并且不会包含任何检查,以便在完成时忽略处理它们。

包含一个停止按钮,这将停止重复,但不会停止正在进行的请求。

请求是异步的,并且没有做任何努力来确保按请求顺序处理它们。

这是一个非常基本的例子,可以让你朝着正确的方向前进。

var pre = document.getElementById('out'),
    interval = 5,
    running = false,
    fetching = false,
    timerId;

function stop() {
    clearInterval(timerId);
    running = false;
}

function todo(id) {
    fetching = true;
    $.ajax({
        type: 'GET',
        url: 'http://jsonplaceholder.typicode.com/albums?id=' + id,
        dataType: 'jsonp',
        error: function (qXHR, textStatus, errorThrown) {
            pre.textContent += id + ': ' + textStatus + '\n';
            stop();
        },
        success: function (data) {
            pre.textContent += id + ': ' + data[0].title + '\n';
        },
        complete: function () {
            fetching = false;
        }
    });
}

function start(id) {
    if (running) {
        stop();
    }

    running = true;
    if (!fetching) {
        todo(id);
    }

    timerId = setInterval(function () {
        if (!fetching) {
            todo(id);
        }
    }, interval * 1000);
}

document.body.addEventListener('click', function (evt) {
    var target = evt.target;
    
    if (target.classList.contains('album')) {
        start(target.value);
    }
}, false);

document.getElementById('stop').addEventListener('click', function () {
    stop();
}, false);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="album" value="1">1</button>
<button class="album" value="2">2</button>
<button class="album" value="3">3</button>
<button class="album" value="4">4</button>
<button id="stop">stop</button>
<pre id="out"></pre>

答案 3 :(得分:0)

您可以使用javascript的setTimeout。 它将在指定的时间间隔内重复给定的函数。

Javascript setTimeout function repeat

OR

setInterval( function(){ todo(id);}, 60000);

答案 4 :(得分:0)

利用setTimeout再次调用该函数:

function todo(id)
{
    $.ajax({
            type:"GET",
            url: "example?value="+id,
            dataType:"text",
            success: function(data) 
            {
             //parsing;
            });
    setTimeout(function(){todo(id)}, 60000);
}

如果您还希望在某些条件下清除超时:

var timer;
function todo(id)
    {
        $.ajax({
                type:"GET",
                url: "example?value="+id,
                dataType:"text",
                success: function(data) 
                {
                 //parsing;
                });
        timer = setTimeout(function(){todo(id)}, 60000);
        if(//Your condition){
         window.clearTimeout(timer);
        }
    }