setInterval定时器停止后,再重新启动
1.数据自动滚动显示(动态添加)
<li>
<div class="FULeTi">
<div class="SLeName">省份名称</div>
<div class="SLeOne">三级</div>
<div class="SLeTwo">四级</div>
<div class="SLeThr">五级</div>
</div>
<div class="LeContent mouseStop01">
<div class="LeConW LeSubFront01"></div>
</div> </li>
function initleftdiv(datas){
$(".LeSubFront01").empty();
$.each(datas,function(i,p){
if(i < 22){
$(".LeSubFront01").append('<div class="LeConSubOne"><div class="LeSub01">'+
p.QQLATN_NAME+'</div><div class="LeSub03">'+
p.QQ30+'</div><div class="LeSub03"><span>'+
p.QQ40+'</span></div><div class="LeSub03"><span>'+
p.QQ50+'</span></div></div>');
}
});
var count = 21;//目前显示的最后一个元素下标
var ivou = setInterval(function moveSet(){
// 删除第一个元素把数组最后一个元素放到倒数第一个
if(++count == datas.length){
count = -1;
return;
}
$(".LeSubFront01 .LeConSubOne:eq(0)").remove();
var tmp = datas[count];
$(".LeSubFront01").append('<div class="LeConSubOne"><div class="LeSub01">'+
tmp.QQLATN_NAME+'</div><div class="LeSub03">'+
tmp.QQ30+'</div><div class="LeSub03"><span>'+
tmp.QQ40+'</span></div><div class="LeSub03"><span>'+
tmp.QQ50+'</span></div></div>');
}, 1000);
}
2.需求:鼠标移入,定时器停止滚动。鼠标移出,恢复自动滚动。
①设置一个全局变量等于true。
var mouseoverStop = true;
②在setInterval定时器中加一个if判断
if(mouseoverStop == true ){}
③鼠标移入移出时,进行mouseoverStop判断。mouseoverStop == true时启动定时器。mouseoverStop == false时关闭定时器
$(".mouseStop01").mouseover(function(){
mouseoverStop = false;
}).mouseout(function(){
if(mouseoverStop == false){
mouseoverStop = true;
}
});
此时,定时器的关闭与启动问题解决了。
3.但出现了一个bug,鼠标移入class="mouseStop01"区域时,定时器看似停止,但mouseover时鼠标在这个区域中,还是不停的判断mouseoverStop。如下

原因:setInterval每隔1s钟会进行一次if(mouseoverStop == true ){ }的判断。
解决方案:mouseover时,mouseoverStop == false,添加一个遮罩层。mouseout时,遮罩层隐藏。
if(mouseoverStop == false){ $(".mouseStop02").show();}
附全文代码:
html
<li>
<div class="FULeTi">
<div class="SLeName">省份名称</div>
<div class="SLeOne">三级</div>
<div class="SLeTwo">四级</div>
<div class="SLeThr">五级</div>
</div>
<div class="LeContent mouseStop01">
<div class="LeConW LeSubFront01"></div>
<div class="mouseStop02"></div>
</div> </li>
css
.mouseStop01{ display: block;}
.mouseStop02{ width: 99%; height: 45rem; display: none; position: absolute; z-index:; background-color: rgba(0,0,0,0);
js
var mouseoverStop = true;
function initleftdiv(datas){
$(".LeSubFront01").empty();
$.each(datas,function(i,p){
if(i < 22){
$(".LeSubFront01").append('<div class="LeConSubOne"><div class="LeSub01">'+
p.QQLATN_NAME+'</div><div class="LeSub03">'+
p.QQ30+'</div><div class="LeSub03"><span>'+
p.QQ40+'</span></div><div class="LeSub03"><span>'+
p.QQ50+'</span></div></div>');
}
}); var count = 21;//目前显示的最后一个元素下标
var ivou = setInterval(function moveSet(){
// 删除第一个元素把数组最后一个元素放到倒数第一个
if(mouseoverStop == true ){
if(++count == datas.length){
count = -1;
return;
}
$(".LeSubFront01 .LeConSubOne:eq(0)").remove();
var tmp = datas[count];
$(".LeSubFront01").append('<div class="LeConSubOne"><div class="LeSub01">'+
tmp.QQLATN_NAME+'</div><div class="LeSub03">'+
tmp.QQ30+'</div><div class="LeSub03"><span>'+
tmp.QQ40+'</span></div><div class="LeSub03"><span>'+
tmp.QQ50+'</span></div></div>');
}
}, 1000); $(".mouseStop01").mouseover(function(){
mouseoverStop = false;
if(mouseoverStop == false){ $(".mouseStop02").show();}
}).mouseout(function(){
if(mouseoverStop == false){
mouseoverStop = true;
$(".mouseStop02").hide();
}
}); }
setInterval定时器停止后,再重新启动的更多相关文章
- 前端开发:setTimeout与setInterval 定时器与异步循环数组
前端开发:setTimeout与setInterval 定时器与异步循环数组 前言: 开通博客园三个月以来,随笔记录了工作中遇到的大大小小的难题,也看过无数篇令人启发的文章,我觉得这样的环境是极好的, ...
- setInterval的停止与启动
最近写代码,需要停止interval之后再重新启动,开始使用代码如下,发现无法重新启动 function func(){console.log("print")} //定时任务 v ...
- [转载] mysql5.6 删除之前的ibdata1文件后再重新生成,遇到[Warning] Info table is not ready to be used. Table 'mysql.slave_master_info' cannot be opened.问题
[转载] mysql5.6 删除之前的ibdata1文件后再重新生成,遇到[Warning] Info table is not ready to be used. Table 'mysql.slav ...
- supervisor更改某项目配置后 需要重新启动才有效
在linux服务器上部署了node项目,使用supervisor进行管理,supervisor是个好工具,具体介绍见这里about supervisor 梗概了该项目对的某些配置后,重新启动项目,发现 ...
- Windows已遇到关键问题,将在一分钟后自动重新启动,请立即保存工作
Windows已遇到关键问题,将在一分钟后自动重新启动,请立即保存工作 1. 把电脑右下角网络断开 2.同时按 "WIN+R" 打开“运行”命令窗口 输入“cmd”命令,按回车键“ ...
- vue_过滤器: 对要显示的数据进行特定格式化后再显示
过滤器 对要显示的数据进行特定格式化后再显示 并未改变原本的数据,可是产生新的对应的数据 <!DOCTYPE html> <html lang="en"> ...
- Win7系统出现提示: “Windows已遇到关键问题,将在一分钟后自动重新启动。”
1. 若用户在使用Win7系统时,遇到上述系统故障,建议重启电脑.等电脑开机自检一过,马上按键盘上的F8键,选择进入安全模式.在安全模式下,进行系统还原.其他的解决方法见下. 1.或者,在安全模式下, ...
- MySQL服务正在启动或停止中,请稍候片刻后再试一次【解决方案】
相信有些小伙伴在使用数据库的过程中会经常频繁的启动和停止MySQL服务,有时候会出现“服务正在启动或停止中,请稍候片刻后再试一次.”这样的提示,如下图所示. 于是乎想办法去解决这个问题,但是发现连强制 ...
- 个人学习记录1:二维数组保存到cookie后再读取
二维数组保存到cookie后再读取 var heartsArray = [[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0,0,0],[0,0, ...
随机推荐
- Bootstrap Method
bootstrap方法是一种重采样技术,用于通过抽样数据集来估计总体统计数据.是一种面向应用的.基于大量计算的统计思维——模拟抽样统计推断. 它可以用来估计统计数据,例如平均值或标准差.在应用机器学习 ...
- LeetCode 818. Race Car
原题链接在这里:https://leetcode.com/problems/race-car/ 题目: Your car starts at position 0 and speed +1 on an ...
- React-Redux常见API
React-Redux是在Redux的基础上,将其大量重复的代码进行了封装. 1. Provider 利用context对象给所有子组件提供store.不再需要在每个组件都引用store. impor ...
- div+css制作哆啦A梦
纯CSS代码加上 制作动画版哆啦A梦(机器猫) 哆啦A梦(机器猫)我们大家一定都很熟悉,今天给大家演示怎么用纯CSS.代码,来做一个动画版的哆啦A梦. 效果图: 下面代码同学可以查看一下,每个线条及椭 ...
- javascript 之正则表达式匹配不包含特定字符串的字符
如:有如下字符串,想查出不包含min.js的字符串 ['xx.min.js','xx.js','x.js','x.min.js'] 方法一: 使用逻辑非判断, !/min\.js/.test(str ...
- CH定理与线性递推
才发觉自己数学差的要死,而且脑子有点浑浑噩噩的,学了一个晚上才学会 如果说的有什么不对的可以在下面嘲讽曲明 以下无特殊说明时,默认方阵定义在实数域上,用\(|A|\)表示\(A\)的行列式 特征值与特 ...
- Python 元类使用讲解
我要一大群的类都具有一种特点,我怎么给他们加上呢?模板嘛,我从这个模板创建一群类不就OK了?那就需要元类了. 定义一个元类(就是一个类的模板!莫多想,还要记住这是类级别的,不是对象级别的!):代码如下 ...
- x32下的DLL隐藏
原理主要就是PEB 中模块断链. 这里整理下代码.原理可以看下另一篇我写的帖子. https://www.cnblogs.com/iBinary/p/9601860.html // dllmain.c ...
- 「ZJOI2019」开关
传送门 Description 有一些一开始全都是关的开关,每次随机选择一个(每个开关概率不同)开关并改变它的状态,问达到目标状态的期望步数 Solution \(P=\sum_{i=1}^{n}p ...
- Net core学习系列(一)——Net Core介绍
一.什么是Net Core .NET Core是适用于 windows.linux 和 macos 操作系统的免费.开源托管的计算机软件框架,是微软开发的第一个官方版本,具有跨平台 (Windows. ...