Как установить постоянный счетчик в javascript, выполнить другую операцию, когда counter> определенное значение?

Я новичок в jquery и javascript. Мне нужно настроить переменную в javascript, которая увеличивается на 1 после каждой секунды. Для этого я сделал следующее:

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

 setInterval(run,1000);

Как только значение переменной> 5, я хочу включить код таким образом, чтобы всякий раз, когда кто-то зависает над iframe на странице html, выполняется запрос ajax.

После запроса aigax синагоги я хочу сбросить таймер = 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 должна быть активирована снова.

Ниже приведен полный код в одном месте:

Я много пробовал и много искал, но не смог найти решение.

3 ответа

Попробуй это:

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);

Если у вас уже есть событие mouseenter в iframe, то выполнение .off('mouseenter') удалит эти привязки.

Как предположил Ян, вы можете назвать событие, позволяющее отменить привязку привязки.

Чтобы сделать это, просто используйте точку при связывании/развязывании:

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


Используйте функцию memoization, чтобы избежать глобальных переменных "таймера":

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 в функцию success вашего вызова AJAX.

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

Ваш AJAX success должен выглядеть success: function(data, status) { timer = 0;} В вашем успехе AJAX, вы хотите, чтобы unbind ваш iframe зависать, а затем повторно связать его, когда timer > 5, так что функциональность парения удаляется при таймер меньше 5.

licensed under cc by-sa 3.0 with attribution.