js实现轮播图的两种方式(构造函数、面向对象)
发布时间 - 2026-01-11 03:30:03 点击率:次本文实例为大家分享了js实现轮播图的具体代码,供大家参考,具体内容如下

1、构造函数
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type='text/css'>
*{ margin:0; padding:0;}
#wrap{
width:500px;
height:360px;
margin:100px auto;
position:relative;
}
#pic{
width:500px;
height:360px;
position:relative;
}
#pic img{
width: 100%;
height: 100%;
position:absolute;
top:0;
left:0;
display:none;
}
#tab{
width:105px;
height:10px;
position:absolute;
bottom:10px;
left:50%;
margin-left:-50px;
}
#tab ul li{
width:10px;
height:10px;
margin:0 5px;
background:#bbb;
border-radius:100%;
cursor:pointer;
list-style:none;
float:left;
}
#tab ul li.on{ background:#f60;}
#btn div{
width:40px;
height:40px;
position:absolute;
top:50%;
margin-top:-20px;
color:#fff;
background:#999;
background:rgba(0,0,0,.5);
font-size:20px;
font-weight:bold;
font-family:'Microsoft yahei';
line-height:40px;
text-align:center;
cursor:pointer;
}
#btn div#left{ left:0;}
#btn div#right{ right:0;}
</style>
</head>
<body>
<div id="wrap">
<div id="pic">
<img src="img/1.jpg" alt="" />
<img src="img/2.jpg" alt="" />
<img src="img/3.jpg" alt="" />
<img src="img/4.jpg" alt="" />
</div>
<div id="tab">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<div id="btn">
<div id='left'><</div>
<div id='right'>></div>
</div>
</div>
<script>
var oWrap=document.getElementById('wrap')
var picImg=document.getElementById('pic').getElementsByTagName('img');
var tabLi=document.getElementById('tab').getElementsByTagName('li');
var btnDiv=document.getElementById('btn').getElementsByTagName('div');
var index=0;
var timer=null;//设置一个timer变量,让他的值为空
//初始化
picImg[0].style.display='block';
tabLi[0].className='on';
for(var i=0;i<tabLi.length;i++){
tabLi[i].index=i;
tabLi[i].onclick=function(){
//不然要for循环清空
/* for(var i=0;i<tabLi.length;i++){
picImg[i].style.display='none';
tabLi[i].className='';
}*/
picImg[index].style.display='none'; //每个li都有index自定义属性
tabLi[index].className='';
index=this.index;
picImg[index].style.display='block';
tabLi[index].className='on';
}
};
for(var i=0;i<btnDiv.length;i++){
btnDiv[i].index=i;
btnDiv[i].onselectstart=function(){ //禁止选择
return false;
}
btnDiv[i].onclick=function(){
picImg[index].style.display='none'; //每个li都有index自定义属性
tabLi[index].className='';
//index=this.index;
if(this.index){
index++; //进来就加1,index就相当1%4 2%4 3%4 4%4
//if(index>tabLi.length){index=0}
//index=index%arrUrl.length; 自己取模自己等于0 alert(3%3) == 0
index%=tabLi.length;//相当于当大于tabLi.length就等于0
}else{
index--;
if(index<0)index=tabLi.length-1;
}
picImg[index].style.display='block';
tabLi[index].className='on';
}
};
auto();
oWrap.onmouseover=function(){
clearInterval(timer)
}
oWrap.onmouseleave=function(){
auto();
}
function auto(){
timer=setInterval(function(){ //一般都是向*播,index++
picImg[index].style.display='none';
tabLi[index].className='';
index++;
index%=tabLi.length;
picImg[index].style.display='block';
tabLi[index].className='on';
},2000)
};
</script>
</body>
</html>
2、面向对象
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type='text/css'>
*{ margin:0; padding:0;}
#wrap{
width:500px;
height:360px;
margin:100px auto;
position:relative;
}
#pic{
width:500px;
height:360px;
position:relative;
}
#pic img{
width: 100%;
height: 100%;
position:absolute;
top:0;
left:0;
display:none;
}
#tab{
width:105px;
height:10px;
position:absolute;
bottom:10px;
left:50%;
margin-left:-50px;
}
#tab ul li{
width:10px;
height:10px;
margin:0 5px;
background:#bbb;
border-radius:100%;
cursor:pointer;
list-style:none;
float:left;
}
#tab ul li.on{ background:#f60;}
#btn div{
width:40px;
height:40px;
position:absolute;
top:50%;
margin-top:-20px;
color:#fff;
background:#999;
background:rgba(0,0,0,.5);
font-size:20px;
font-weight:bold;
font-family:'Microsoft yahei';
line-height:40px;
text-align:center;
cursor:pointer;
}
#btn div#left{ left:0;}
#btn div#right{ right:0;}
</style>
</head>
<body>
<div id="wrap">
<div id="pic">
<img src="img/1.jpg" alt="" />
<img src="img/2.jpg" alt="" />
<img src="img/3.jpg" alt="" />
<img src="img/4.jpg" alt="" />
</div>
<div id="tab">
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
</div>
<div id="btn">
<div id='left'><</div>
<div id='right'>></div>
</div>
</div>
<script>
var oWrap=document.getElementById('wrap')
var picImg=document.getElementById('pic').getElementsByTagName('img');
var tabLi=document.getElementById('tab').getElementsByTagName('li');
var btnDiv=document.getElementById('btn').getElementsByTagName('div');
function Banner(oWrap,picImg,tabLi,btnDiv){
this.wrap=oWrap
this.list=picImg
this.tab=tabLi
this.btn=btnDiv
this.index=0; //这些都必须是私有的,不然两个banner会一样
this.timer=null;
this.length=this.tab.length;
// this.init();//下面创建好,要在这里执行
}
//初始化分类
Banner.prototype.init=function(){ //先把下面的分类
var This=this; //var 一个This变量把this存起来
this.list[0].style.display='block';
this.tab[0].className='on';
for(var i=0;i<this.length;i++){
this.tab[i].index=i;
this.tab[i].onclick=function(){
//this.list[index].style.display='none'; 这里的this指向tab的this
This.list[This.index].style.display='none';
This.tab[This.index].className='';
//index=this.index;
This.index=this.index;
This.list[This.index].style.display='block';
//This.tab[This.index].className='on';
this.className='on';
}
};
for(var i=0;i<this.btn.length;i++){
this.btn[i].index=i;
this.btn[i].onselectstart=function(){
return false;
}
this.btn[i].onclick=function(){
This.list[This.index].style.display='none';
This.tab[This.index].className='';
if(this.index){
This.index++;
This.index%=This.length;
}else{
This.index--;
if(index<0)This.index=This.length-1;
}
This.list[This.index].style.display='block';
This.tab[This.index].className='on';
}
}
this.auto();
this.clear();
};
Banner.prototype.auto=function(){
var This=this;
This.timer=setInterval(function(){ //一般都是向*播,index++
This.list[This.index].style.display='none';
This.tab[This.index].className='';
This.index++;
This.index%=This.length;
This.list[This.index].style.display='block';
This.tab[This.index].className='on';
},2000)
};
Banner.prototype.clear=function(){
var This=this;
this.wrap.onmouseover=function(){
clearInterval(This.timer)
}
this.wrap.onmouseleave=function(){
This.auto();
}
};
var banner1=new Banner(oWrap,picImg,tabLi,btnDiv);
banner1.init();
/*
* init()
* function init(){
for(var i=0;i<tabLi.length;i++){
tabLi[i].index=i;
tabLi[i].onclick=function(){
picImg[index].style.display='none';
tabLi[index].className='';
index=this.index;
picImg[index].style.display='block';
tabLi[index].className='on';
}
};
}
for(var i=0;i<btnDiv.length;i++){
btnDiv[i].index=i;
btnDiv[i].onselectstart=function(){
return false;
}
btnDiv[i].onclick=function(){
picImg[index].style.display='none';
tabLi[index].className='';
if(this.index){
index++;
index%=tabLi.length;
}else{
index--;
if(index<0)index=tabLi.length-1;
}
picImg[index].style.display='block';
tabLi[index].className='on';
}
};
auto();
oWrap.onmouseover=function(){
clearInterval(timer)
}
oWrap.onmouseleave=function(){
auto();
}
function auto(){
timer=setInterval(function(){ //一般都是向*播,index++
picImg[index].style.display='none';
tabLi[index].className='';
index++;
index%=tabLi.length;
picImg[index].style.display='block';
tabLi[index].className='on';
},2000)
};
*/
</script>
</body>
</html>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# js
# 轮播图
# js核心基础之构造函数constructor用法实例分析
# 深入浅析js原型链和vue构造函数
# 详解Javascript 中的 class、构造函数、工厂函数
# 详解JS构造函数中this和return
# Javascript中获取对象的原型对象的方法小结
# 深入理解javascript构造函数和原型对象
# 一文秒懂JavaScript构造函数、实例、原型对象以及原型链
# 都是
# 都有
# 自定义
# 要在
# 先把
# 大家分享
# 就等于
# 具体内容
# 值为
# 大家多多
# 面向对象
# 清空
# 都必须
# tab
# display
# left
# top
# bottom
# pic
# relative
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何记录自定义日志?(Log频道配置)
如何用花生壳三步快速搭建专属网站?
Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程
深圳网站制作的公司有哪些,dido官方网站?
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧
Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践
Laravel如何发送系统通知?(Notification渠道示例)
网站制作大概多少钱一个,做一个平台网站大概多少钱?
如何用好域名打造高点击率的自主建站?
使用Dockerfile构建java web环境
原生JS获取元素集合的子元素宽度实例
今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】
如何在阿里云高效完成企业建站全流程?
Swift中循环语句中的转移语句 break 和 continue
香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
LinuxShell函数封装方法_脚本复用设计思路【教程】
Laravel中的withCount方法怎么高效统计关联模型数量
HTML 中动态设置元素 name 属性的正确语法详解
JavaScript如何实现错误处理_try...catch如何捕获异常?
做企业网站制作流程,企业网站制作基本流程有哪些?
微信小程序 wx.uploadFile无法上传解决办法
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
Laravel如何实现用户注册和登录?(Auth脚手架指南)
javascript基本数据类型及类型检测常用方法小结
Laravel怎么为数据库表字段添加索引以优化查询
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
Thinkphp 中 distinct 的用法解析
魔方云NAT建站如何实现端口转发?
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
Laravel如何实现用户密码重置功能?(完整流程代码)
Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程
如何快速搭建虚拟主机网站?新手必看指南
Laravel如何处理表单验证?(Requests代码示例)
家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
百度输入法ai组件怎么删除 百度输入法ai组件移除工具
Laravel如何实现文件上传和存储?(本地与S3配置)
香港服务器WordPress建站指南:SEO优化与高效部署策略
Laravel怎么发送邮件_Laravel Mail类SMTP配置教程
Laravel如何自定义错误页面(404, 500)?(代码示例)
,网页ppt怎么弄成自己的ppt?
js代码实现下拉菜单【推荐】
微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】

