جافا سكريبت - إيقاف setInterval


أريد أن أتوقف عن تشغيل هذا الفاصل في معالج error بشكل متكرر. هل هذا ممكن، وإذا كان كذلك، كيف؟

// example code
$(document).on('ready',function(){
    setInterval(updateDiv,3000);
});

function updateDiv(){
    $.ajax({
        url: 'getContent.php',
        success: function(data){
            $('.square').html(data);
        },
        error: function(){
            $.playSound('oneday.wav');
            $('.square').html('<span style="color:red">Connection problems</span>');
            // I want to stop it here
        }
    });
}

الإجابة رقم 1

تحتاج إلى تعيين قيمة الإرجاع الخاصة بـ setInterval إلى متغير داخل نطاق معالج النقر، ثم استخدام clearInterval() بهذه الطريقة:

var interval = null;
$(document).on('ready',function(){
    interval = setInterval(updateDiv,3000);
});

function updateDiv(){
    $.ajax({
        url: 'getContent.php',
        success: function(data){
            $('.square').html(data);
        },
        error: function(){
            clearInterval(interval); // stop the interval
            $.playSound('oneday.wav');
            $('.square').html('<span style="color:red">Connection problems</span>');
        }
    });
}

الإجابة رقم 2

استخدم متغيرًا واستدعِ clearInterval لإيقافه.

var interval;

$(document).on('ready',function()
  interval = setInterval(updateDiv,3000);
  });

  function updateDiv(){
    $.ajax({
      url: 'getContent.php',
      success: function(data){
        $('.square').html(data);
      },
      error: function(){
        $.playSound('oneday.wav');
        $('.square').html('<span style="color:red">Connection problems</span>');
        // I want to stop it here
        clearInterval(interval);
      }
    });
  }

الإجابة رقم 3

عليك تعيين القيمة المرجعة من دالة setInterval لمتغير

var interval;
$(document).on('ready',function(){
    interval = setInterval(updateDiv,3000);
});

ثم استخدم clearInterval(interval) لمسحه مرة أخرى.