如何在javascript中设置不断递增的计数器,当计数器>一定的价值

How to set constantly incrementing counter in javascript , to perform another operation when counter > certain value?

本文关键字:计数器 gt 设置 javascript      更新时间:2023-09-26

我是jquery和javascript的新手。我需要在javascript中设置一个变量,该变量每秒递增1。为此,我做了以下事情:

    function run(){         
      timer++;  
    }// run ends here
   setInterval(run,1000);

一旦变量值>5,我想启用代码,这样,每当有人在html页面中的iframe上悬停时,ajax请求就会完成。

在发出ajax请求后,我想重置timer=0。

if(timer>5){
$("iframe").hover(function(){
        $.ajax({
          url:     'http://localhost/test.html',
          cache:   false,
          data:    'html',
          success: function(data,status) {
          }
        });          
});
  timer=0;
}

这个过程应该再次重复,计数器应该再次从0开始到5,ajax请求功能应该再次激活。

以下是一个地方的完整代码:

<script>
var i = 0;
var timer=0;
        function run(){         
            timer++;    
        }// run ends here
        setInterval(run,1000);          
        if(timer>5){
        $("iframe").hover(function(){
                $.ajax({
                  url:     'http://localhost/test.html',
                  cache:   false,
                  data:    'html',
                  success: function(data,status) {
                  }
                });          
        });
          timer=0;
        }
</script>

我试了很多,在谷歌上搜索了很多,但都没能找到解决方案。

试试这个:

var timer=0;
function run(){         
    timer++;    
    if(timer == 5){
        $("iframe").on('mouseenter', function(){
            $.ajax({
                url:     'http://localhost/test.html',
                cache:   false,
                data:    'html',
                success: function(data,status) {
                    timer=0;
                    $('iframe').off('mouseenter')
                }
            });          
        });
    }
}// run ends here
setInterval(run,1000);          

如果您的iframe上已经有mouseenter事件,那么执行.off('mouseenter')将删除这些绑定。

正如Ian所建议的,您可以命名您的事件,从而可以解除特定绑定的绑定。

要做到这一点,只需在绑定/解除绑定时使用一个点:

$("iframe").on('mouseenter.timer',...)
$('iframe').off('mouseenter.timer')

使用函数记忆来避免全局"计时器"变量:

function run(){
  run.timer = run.timer || 0;   
  return run.timer++;
} // run ends here
setInterval(run,1000);

要根据计时器采取相应的操作,请从run()运行处理,例如:

function run(){
    run.timer = run.timer || 0;   
    run.timer = handleTimer(run.timer++);
} // run ends here
setInterval(run,1000);
function handleTimer(timer) {
    if(timer > 5){
        $("iframe").hover(function(){
            $.ajax({
                url:     'http://localhost/test.html',
                cache:   false,
                data:    'html',
                success: function(data,status) {
                }
            }); 
            // And disable hover handler once executed
            $("iframe").unbind("mouseenter mouseleave");
        });
        return 0;
    }
    return timer; // continue timer chaining
}

if语句放在run()中,并将timer=0移到AJAX调用的success函数中。

function run() {
    timer ++;
    if(timer == 5) {
        //Your ajax here
    }
}

AJAX success应该看起来像success: function(data, status) { timer = 0;}。在AJAX成功的情况下,您将希望unbind您的iframe悬停,然后在timer > 5时重新绑定,以便在计时器小于5时删除悬停功能。