停止重复设置计时器函数jQuery

停止重复设置计时器函数jQuery,jquery,time,timer,set,Jquery,Time,Timer,Set,我不支持jquery,但我只是做了一个简单的代码来显示一个div,然后用10秒计时器单击另一个div 这是我的代码: $(document).ready(function() { $('.link').click(function() { $('#my-timer').fadeIn('slow'); var settimmer = 0; $(function(){ setInterval(function() {

我不支持jquery,但我只是做了一个简单的代码来显示一个div,然后用10秒计时器单击另一个div

这是我的代码:

$(document).ready(function() {
    $('.link').click(function() {
    $('#my-timer').fadeIn('slow');
        var settimmer = 0;
        $(function(){
                setInterval(function() {
                    var timeCounter = $("b[id=show-time]").html();
                    var updateTime = eval(timeCounter)- eval(1);
                    $("b[id=show-time]").html(updateTime);

                    if(updateTime == 0){
                    $('#my-timer').hide(); 
                      $('.download').fadeIn('slow'); 
                    }
                }, 1000);           
});
});
        $(".download").hide();
        $("#my-timer").hide();
});
HTML:

链接
下载
页面将在10秒内以重定向
演示:

我的问题是:

1:当第一次点击链接时,一切正常,但我需要只显示一次这个计时器!在演示中,你们可以看到,每10秒后,若你们点击链接,定时器将启动,并像这样计数,-1,-2,-3,-4。。。如何在10秒后停止并禁用此计时器?我需要在10秒后禁用计时器

2:我需要显示这个计时器10秒,但如果你点击链接词3-4次,计时器就会工作得很快!我想我的问题是定时器的速度!我不知道如何解释这个问题,但你可以尝试在演示链接,只需点击链接4-5次,看看定时器

最后一个问题,我不知道我的代码是否标准。我需要更改代码还是正确

谢谢

您可以使用jQuery函数和本机JavaScript函数

演示:

您可以使用jQuery函数和本机JavaScript函数


演示:

我认为最简单的处理方法就是使用
one
。由于您只希望此事件触发一次,
one
将在第一次单击后解除处理程序的绑定

$('.link').one("click", function() {
您还需要使用
clearInterval
在完成间隔后停止间隔

在相关说明中,不要使用
eval
。在这种情况下,您应该使用
parseInt
,或者在javascript变量中维护数字


我认为最简单的处理方法就是使用
one
。由于您只希望此事件触发一次,
one
将在第一次单击后解除处理程序的绑定

$('.link').one("click", function() {
您还需要使用
clearInterval
在完成间隔后停止间隔

在相关说明中,不要使用
eval
。在这种情况下,您应该使用
parseInt
,或者在javascript变量中维护数字


我只是在编辑你的小提琴

var timeCounter = 10;
var istimerStart = false;

$(document).ready(function() {
  $('.link').click(function() {
    $('#my-timer').fadeIn('slow');

    $(function(){

        if(istimerStart == false){

           setInterval(function() {
              istimerStart = true;
                timeCounter = $("b[id=show-time]").html();
                var updateTime = eval(timeCounter)- eval(1);
                $("b[id=show-time]").html(updateTime);

                if(updateTime == 0){
                   $('#my-timer').hide();
                   $('.download').fadeIn('slow');
                }
            }, 1000);
         }
     });
    });
    $(".download").hide();
    $("#my-timer").hide();
});

你们的错误:每当你们点击链接,新的间隔就是开始,所以我设置了一个标志

无用的建议:计时器功能永远不要写入文档。如果可能的话,准备好执行单独的功能


(这不是一条规则,但我遵循它是为了避免bug)。

我只是在编辑你的小提琴

var timeCounter = 10;
var istimerStart = false;

$(document).ready(function() {
  $('.link').click(function() {
    $('#my-timer').fadeIn('slow');

    $(function(){

        if(istimerStart == false){

           setInterval(function() {
              istimerStart = true;
                timeCounter = $("b[id=show-time]").html();
                var updateTime = eval(timeCounter)- eval(1);
                $("b[id=show-time]").html(updateTime);

                if(updateTime == 0){
                   $('#my-timer').hide();
                   $('.download').fadeIn('slow');
                }
            }, 1000);
         }
     });
    });
    $(".download").hide();
    $("#my-timer").hide();
});

你们的错误:每当你们点击链接,新的间隔就是开始,所以我设置了一个标志

无用的建议:计时器功能永远不要写入文档。如果可能的话,准备好执行单独的功能


(这不是一条规则,但我遵循这条规则是为了避免错误)。

从这开始倒计时:10@Alireza,如果您使用
eval
99%的时间都是错误的<代码>评估(1)与
1
相同。这根本没道理。OkiDoki,你能帮我更正一下这个密码吗,兄弟(对于从此处开始倒计时:10@Alireza,如果你使用
eval
99%的时间都是错误的。
eval(1)
1
是一样的。这根本没有意义。OkiDoki,你能帮我纠正一下这个代码吗,兄弟(对不起,取消绑定不设置超时。对不起,取消绑定不设置超时。+1除了使用比我更好的方法之外,你写了一个更简洁的答案。+1除了使用比我更好的方法之外,你写了一个更简洁的答案。