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定时器停止后,再重新启动的更多相关文章

  1. 前端开发:setTimeout与setInterval 定时器与异步循环数组

    前端开发:setTimeout与setInterval 定时器与异步循环数组 前言: 开通博客园三个月以来,随笔记录了工作中遇到的大大小小的难题,也看过无数篇令人启发的文章,我觉得这样的环境是极好的, ...

  2. setInterval的停止与启动

    最近写代码,需要停止interval之后再重新启动,开始使用代码如下,发现无法重新启动 function func(){console.log("print")} //定时任务 v ...

  3. [转载] 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 ...

  4. supervisor更改某项目配置后 需要重新启动才有效

    在linux服务器上部署了node项目,使用supervisor进行管理,supervisor是个好工具,具体介绍见这里about supervisor 梗概了该项目对的某些配置后,重新启动项目,发现 ...

  5. Windows已遇到关键问题,将在一分钟后自动重新启动,请立即保存工作

    Windows已遇到关键问题,将在一分钟后自动重新启动,请立即保存工作 1. 把电脑右下角网络断开 2.同时按 "WIN+R" 打开“运行”命令窗口 输入“cmd”命令,按回车键“ ...

  6. vue_过滤器: 对要显示的数据进行特定格式化后再显示

    过滤器 对要显示的数据进行特定格式化后再显示 并未改变原本的数据,可是产生新的对应的数据 <!DOCTYPE html> <html lang="en"> ...

  7. Win7系统出现提示: “Windows已遇到关键问题,将在一分钟后自动重新启动。”

    1. 若用户在使用Win7系统时,遇到上述系统故障,建议重启电脑.等电脑开机自检一过,马上按键盘上的F8键,选择进入安全模式.在安全模式下,进行系统还原.其他的解决方法见下. 1.或者,在安全模式下, ...

  8. MySQL服务正在启动或停止中,请稍候片刻后再试一次【解决方案】

    相信有些小伙伴在使用数据库的过程中会经常频繁的启动和停止MySQL服务,有时候会出现“服务正在启动或停止中,请稍候片刻后再试一次.”这样的提示,如下图所示. 于是乎想办法去解决这个问题,但是发现连强制 ...

  9. 个人学习记录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, ...

随机推荐

  1. Vue --- 项目创建

    目录 创建Vue项目之前的准备 创建Vue项目 重新构建项目 项目目录介绍 项目的生命周期 Vue文件式组件 配置自定义全局样式 路由逻辑跳转 生命周期钩子 路由传参的两种方式 创建Vue项目之前的准 ...

  2. python OOP

    object oriented programming 干啥的 1.避免重名(封装) 2.避免代码重复(继承) 3.将复杂的流程抽象地封装起来 4.模块化程度高,应对复杂编程问题 1)划分职责-要做的 ...

  3. 【洛谷P2664】 树上游戏 点分治

    code: #include <bits/stdc++.h> #define N 200009 #define ll long long #define setIO(s) freopen( ...

  4. 用Desmos玩极坐标[适配手机端]

    前言 数学给人的印象一直就是算算算,今天我们不算,我们只玩. 必备条件 ①."呆萌"软件--Desmos 网址:https://www.desmos.com/calculator, ...

  5. ThinkPad T410i 2516A21 升級手札(換SSD固態硬碟、I7 CPU、開機20秒)

    最近筆記本越來越慢,開機得20分鐘,而且CPU動不動就飆到80度,趁著開學網上活動,準備給老伙計來一次重大升級.查一下主板芯片,最高支持8G內存,已經滿了,光驅位加了一個1T機械硬盤,那麼能升級的就只 ...

  6. 洛谷P1043数字游戏

    题目 区间DP,将\(maxn[i][j][k]\)表示为i到j区间内分为k个区间所得到的最大值,\(minn\)表示最小值. 然后可以得到状态转移方程: \[maxn[i][j][k]= max(m ...

  7. 【洛谷】P1449 后缀表达式

    P1449 后缀表达式 分析: 简单的模拟题. 熟练容器stack的话很容易解决. stack,栈,有先进后出的特性. 比如你有一个箱子,你每放进第一个数时,就往箱底放,放第二个数时就在第一个数的上面 ...

  8. python3 Paramiko模块学习

    简介 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以后,我们就可以在Py ...

  9. 微信小程序之页面传参

    效果图: 点击编辑值传过去了,那么编辑支出类型这个界面又是如何获取到值呢? 传值代码: type.js editType: function (e) { var typeId = e.currentT ...

  10. Compute API 关键概念 详解

    Compute API 是 RESTful HTTP 服务,提供管理虚机的能力. 虚机可能有不同的内存大小,CPU数量,硬盘大小,能够在几分钟之内创建出来.和虚机的交互,可以通过Compute API ...