setinterval越来越快_javascript,_js使用setInterval实现自动轮播图片功能,速度变得越来越快?,javascript - phpStudy...

在实现JavaScript自动轮播图片功能时,开发者遇到轮播速度越来越快的bug。问题源于鼠标移入和移出ul标签时,setInterval的处理方式。当鼠标移入,虽然暂停了定时器,但移出时每次重新设置定时器,导致轮播速度加快。解决方案是正确管理和恢复定时器,确保其只启动一次。
摘要由CSDN通过智能技术生成

js使用setInterval实现自动轮播图片功能,速度变得越来越快?

1.问题:当初学使用js实现轮播器功能时,页面加载完,自动播放图片运行正常,当鼠标第一次移入ul标签时,自动播放停止,移出鼠标,自动播放继续,

但是随着运行,轮播图片的变化速度非常快,而且这时点击ul标签已经不起作用了,不知道错在哪里了?下面是实现的js代码:

window.onload = function(){

//轮播初始化

var lunbo = document.getElementById('content');

var imgs = lunbo.getElementsByTagName('img');

var uls = lunbo.getElementsByTagName('ul');

var lis = lunbo.getElementsByTagName('li');

//初始状态下,一个圆圈为高亮模式

lis[0].style.fontSize = '26px';

lis[0].style.color = '#fff';

//定义一个全局变量,用来进行自动轮播图片顺序的变化

var pic_index = 1;

//自动轮播

var pic_time = setInterval(autobofang,3000);

function autobofang(){

if(pic_index >= lis.length){

pic_index = 0;

}

change1(pic_index);

pic_index++;

}

function change1(index){

//让所有图片都不显示,所有圆圈都为普通样式

for(var j=0;j

imgs[j].style.display = 'none';

lis[j].style.fontSize = '24px';

lis[j].style.color = '#999';

}

//让选中的索引的图片显示,对应的圆圈高亮

imgs[index].style.display = 'block';

lis[index].style.fontSize = '26px';

lis[index].style.color = '#fff';

//鼠标移入ul标签,自动播放图片暂停

uls[0].addEventListener("mouseenter",pause,false);

//鼠标移出ul标签,自动播放图片继续

uls[0].addEventListener("mouseleave",go,false);

}

//自动播放暂停函数

function pause(event){

var event=event||window.event;

var target=event.target||event.srcElement;

switch(target.id){

case "pic1":

clearInterval(pic_time);

break;

case "pic2":

clearInterval(pic_time);

break;

case "pic3":

clearInterval(pic_time);

break;

}

}

//自动播放图片继续函数

function go(event){

var event=event||window.event;

var target=event.target||event.srcElement;

var children = target.parentNode.children;

switch(target.id){

case "pic1":

pic_index = 1;

setInterval(autobofang,3000);

break;

case "pic2":

pic_index = 2;

setInterval(autobofang,3000);

break;

case "pic3":

pic_index = 3;

setInterval(autobofang,3000);

break;

}

}

/* 问题:当鼠标第一次移入ul标签时,正确,

但是随着运行,轮播图片的变化速度非常快,而且这时点击ul标签已经不起作用了

*/

//手动轮播

for(var i=0;i

lis[i].addEventListener("mouseover",change,false);

}

function change(event){

var event=event||window.event;

var target=event.target||event.srcElement;

var children = target.parentNode.children;

for(var i=0;i

if(target == children[i]){

for(var j=0;j

imgs[j].style.display = 'none';

lis[j].style.fontSize = '24px';

lis[j].style.color = '#999';

}

imgs[i].style.display = 'block';

lis[i].style.fontSize = '26px';

lis[i].style.color = '#fff';

}

}

}

}

相关阅读:

关于平衡二叉树优化算法

如何在我的app中对接支付宝支付?

iOS文字上下滚动效果什么实现?

在单选框选中的情况下,点击被选单选框取消选中状态

为什么jquery fileupload没有模板就不能上传文件

清理无用js

网络图片下载

Yii关联查询使用with无法生成正确sql的问题

javascript this问题

thinkphp5理解不了

纯前端,判断进入A页面时链接中有没有传进一个参数?

有哪些和设计师息息相关的前端技术?

vim中有撤销上一次的命令行操作的命令吗?

求配置好的android ffmpeg播放器

关于 SOAP 做 web service 的困惑

freemarker number_to_datetime的问题

insert all 如何配合 自增队列使用,向oracle批量插入数据

百度招聘页面的背景,那个可跟鼠标移动的星空背景是怎么做的啊

用不用框架

nginx反代ngrok的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值