javascript - 检查 setInterval 内的条件时,clearInterval 不起作用
问题描述
实际上,我正在使用 vanilla javascript 设计一个自动播放滑块。所以有两个功能,一个是播放正向滑块,一个是反向播放。当我在前向滑块的最后一项上时,我想清除间隔并启动反向滑块,反之亦然,当我在反向滑块的最后一项上时,我想清除间隔并启动前向滑块。但是间隔没有被清除,一旦切换到反向滑块并继续运行两个间隔
function sliderForwardAutoplay(){
var Fid = setInterval(()=>{
var currentSlider = document.querySelector('.current-slider');
if(parseInt(currentSlider.dataset.num)===2){
clearInterval(Fid);
sliderReverseAutoplay();
}
// alert(currentSlider.dataset.num+1);
// currentSlider.classList.add('swipe-left');
getSliderLayer(parseInt(currentSlider.dataset.num)+1).classList.add('swipe','current-slider');
setInterval(()=>{
getImgLayer(parseInt(currentSlider.dataset.num)+1).classList.add('left-0');
},500);
currentSlider.classList.remove('current-slider');
},5000);
}
function sliderReverseAutoplay(){
var Rid = setInterval(()=>{
var currentSlider = document.querySelector('.current-slider');
if(parseInt(currentSlider.dataset.num)===0){
clearInterval(Rid);
sliderForwardAutoplay();
}
// alert(currentSlider.dataset.num+1);
// currentSlider.classList.add('swipe-left');
getSliderLayer(parseInt(currentSlider.dataset.num)).classList.add('swipe-right');
getSliderLayer(parseInt(currentSlider.dataset.num)-1).classList.add('current-slider'); currentSlider.classList.remove('current-slider');
},5000);
}
解决方案
推荐阅读
- python - 使用随机“昵称”匿名化 pandas 名称列
- ios - 突然“无法构建模块”来了,它只发生在 iOS 设备上,在模拟器中它工作正常
- reactjs - 显示每个历史路线的用户 ID
- sql - 如果所有行都满足sql中的条件,则结果为true
- android - (React Native) 如何将应用签名密钥上传到 Google Play 控制台?
- android - 如何执行单击 TextInputLayout EndIcon 按钮
- java - 测量 Hyperledger Fabric 项目的性能
- mongodb - 用新数据覆盖字段
- laravel - 使用拉取数据的 Vue 组件将推送数据的 Laravel 签名路由转换为签名路由
- elasticsearch - 从有子查询中的子项获取某些字段