[英]How can I clear setInterval when a specific button is pressed?
我很難找到一個解決方案,該解決方案是在單擊特定按鈕(帶有“下一個”類)時如何清除setInterval。 我的代碼在下面列出,我剛開始學習js和jquery,所以它的狀態可能不好。
<script>
var slideIndex = 1;
showSlides(slideIndex);
function plusSlides(n) {
showSlides(slideIndex += n);
}
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("mySlides");
if (n > slides.length) {slideIndex = 1}
if (n < 1) {slideIndex = slides.length}
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slides[slideIndex-1].style.display = "block";
}
$(document).ready(function(){
function playslider(){
$('.next').trigger('click');
var x = setTimeout(function(){playslider()}, 5000);
}
playslider(); <!--To loop-->
});
</script>
另外,如果您不介意幫助我,如何在頁面加載后5秒鍾內進行首次單擊。
編輯:詳細說明,以便您對我在做什么以及需要什么幫助有更深入的了解。 我正在創建一個簡單的自動圖片幻燈片,它具有“下一個”和“上一個”按鈕。 當按下“下一個”或“上一個”按鈕時,我想取消setInterval(與setTimout一起使用)。 而且,我很難確定要在哪里放置代碼以及如何清除setInterval時間,同時又轉到下一張圖片。
var slides = $(".mySlides");
要延遲執行,請使用頁面加載:
var tId ;
function playslider(){
$('.next').trigger('click');
}
$(function() {
tId = setInterval(playslider,5000); // can be stopped with clearInterval(tId);
});
您實際上是在使用setTimeout
,而不是setInterval
。
您可以使用clearTimeout(id)
取消超時
您也可以使用setInterval
代替:
var slideIndex = 1;
showSlides(slideIndex);
function plusSlides(n) {
showSlides(slideIndex += n);
}
function showSlides(n) {
var i;
var slides = document.getElementsByClassName("mySlides");
if (n > slides.length) {slideIndex = 1}
if (n < 1) {slideIndex = slides.length}
for (i = 0; i < slides.length; i++) {
slides[i].style.display = "none";
}
slides[slideIndex-1].style.display = "block";
}
$(document).ready(function(){
var intervalId = null;
function enablePlayback(){
if(intervalId == null) {
setInterval(function() {
$('.next').trigger('click'); // you should implement this differently, as this is bad practice.
}, 5000);
}
}
function disablePlayback() {
if(intervalId != null) {
clearInterval(intervalId);
intervalId = null;
}
}
enablePlayback(); <!--To loop-->
$('#ButtonToDisable').click(function() { disablePlayback(); });
$('#ButtonToEnable').click(function() { enablePlayback(); });
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.