مسح الفاصل الزمني-شيء خاطئ
-
12-12-2019 - |
سؤال
يبدو أن كل شخص لديه بعض المشاكل مع واضحالفاصل الزمني.لقد بنيت المنزلق الذي يسمح للناس لتحوم فوق الأسهم.تدور لافتة أيضا بضع ثوان من أي وقت مضى.أريد أن أكون قادرا على إيقاف تشغيل التدوير التلقائي بعد أن ينقر شخص ما على أحد الأسهم.
وهنا رمز بلدي:
$(function(){
var intvl = 0;
intvl = setInterval(heroTransitionNext, 2000);
$('.rightArrow').click(function(){
window.clearInterval(intvl);
});
});
تحرير:
هنا هي وظيفة فإنه يدعو:
function heroTransitionNext() {
$('.HP-hero li').filter(':visible').fadeOut('normal', function () {
if ($(this).next().length != 0) {
activeZone = parseInt(activeZone) + 1;
$(this).next().fadeIn('normal', heroNavHighlight(activeZone));
} else {
activeZone = 1;
$('.HP-hero li:first-child').fadeIn('normal', heroNavHighlight(activeZone));
}
$(this).hide();
});
};
المحلول
لإيقاف الرسوم المتحركة يمكنك استخدام jquery
في .stop()
لكن لست متأكدا مما إذا كان سيحل المشكلة أم لا التي تواجهها (لم تتخيل) ولكن يمكنك تجربتها
$('.HP-hero li').stop(1,1); // or try $('.HP-hero li').stop()
window.clearInterval(intvl);
كما say2joe
قال ذلك clearInterval
سوف تتوقف فقط وظيفة من استدعاء في المرة القادمة لكنه لن مسح قائمة الانتظار الحالية (هو على حق) حتى في هذه الحالة stop
يمكن استخدامها.
نصائح أخرى
اعتمادا على مقدار العمل الذي تقوم به وظيفة Herotransitionnext الخاصة بك، قد لا يزال يتعين تنفيذه على الرغم من إزالة الفاصل الزمني - بمعنى آخر، فإن مسح الفاصل الزمني سيقمان الوظيفة من الإلغاء - ولكن أي مثيل من الوظيفة (ق) سوف يستمر تنفيذ الذاكرة في التنفيذ حتى الانتهاء.
لتكون أكثر وضوحا، وهنا حالة استخدام (يمكنك التحقق من ذلك بنفسك باستخدام ملف تعريف في Firebug أو أدوات المطور):
وقت تنفيذ herotransitionnext هو 2.1 ثانية. يتم استدعاء Cleartinerval 6.1 ثانية بعد إجراء SetInterval. عند 6.1 ثانية، تم استدعاء herotransitionnext أربع مرات. ومع ذلك، أكملت عمليات الإعدام الثلاثة الأولى، إلا أن الرابع لن يكمل حتى ينتهي تنفيذ (عند 8.1 ثانية منذ أن تم استدعاء Setinterval). ملاحظة: في حالة الاستخدام هذه، ستنفذ كل استدعاء متتالي في حين أن تنفيذ آخر استدعاء لا يزال مستمرا (مقابل 100 مليون شخص آخر) - بمعنى آخر، سيكون لديك تداخل تنفيذ من 2 إلى 2.1 و 4 إلى 4.1 و 6 إلى 6.1 فترات ثانية.
إذا استغرقت الوظيفة وقتا أطول للتنفيذ من مجموعة الفاصل الزمني، فاستخدم وظيفة متكررة مع Settimeout (). الرابط التالي سوف يمنحك مثالا جيدا.
أيضا، مرجع جيد للتفسير هو https:/developer.mozilla.org/ en / dom / window.setinterval .