老师,我想问下,手动切换选项为什么切换不到对应的图片?
HTML <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JS小项目</title> <link rel="stylesheet" href="css/style.css"> </head> <body> <div class="box"> <div class="header"> <ul id="option"> <li><a href="" class="active">首页</a></li> <li><a href="">点击看看</a></li> <li><a href="">会自动的</a></li> <li><a href="">我的网站</a></li> </ul> </div> <div class="main" id="main"> <div class="banner" id="banner"> <a href=""> <div class="banner-slide slide1 slide-active"></div> </a> <a href=""> <div class="banner-slide slide2"></div> </a> <a href=""> <div class="banner-slide slide3"></div> </a> <a href=""> <div class="banner-slide slide4"></div> </a> </div> </div> </div> <script src="js/script.js"> </script> </body> </html> css *{ margin:0; padding:0; } .box{ margin:0 auto; width:1200px; } .header{ width:1200px; height:80px; background:#FFF; } .header ul li{ text-align:center; line-height:80px; float:left; width:300px; height:80px; list-style:none; font-weight:bold; font-family:Microsoft YaHei; font-color:black; } .header ul li:hover{background:#FFCC00;} a{text-decoration:none;color:black;} .main{ width:1200px; height:460px; overflow:hidden; } .banner{ width:1200px; height:460px; overflow:hidden; position:relative; } .banner-slide{ width:1200px; height:460px; background-repeat:no-repeat; position:absolute; display:none; } .slide-active{ display:block; } .slide1{ background-image:url("../img/1.jpg"); } .slide2{ background-image:url("../img/3.jpg"); } .slide3{ background-image:url("../img/4.jpg"); } .slide4{ background-image:url("../img/5.jpg"); } #option li.active{ background:#FFCC00; }
js
//封装一个代替getElementById()的方法
function byId(id){
return typeof(id)==="string"?document.getElementById(id):id;
}
//全局变量
var index=0,
timer=null,
pics=byId("banner").getElementsByTagName("div"),
option=byId("option").getElementsByTagName("li"),
len=pics.length;
function slideImg(){
changeImg();
var main=byId("main");
//滑过清除定时器,离开继续
main.onmouseover=function(){
//滑过清除定时器
if(timer) clearInterval(timer);
}
main.onmouseout=function(){
timer=setInterval(function(){
index++;
if(index>=len){
index=0;
}
//切换图片
changeImg();
},1000)
} //调用onmouseout事件
//自动在main上触发鼠标离开的事件
main.onmouseout(); //调用onmouseout方法
//遍历所有选项,且绑定事件,点击选项切换图片
for(var d=0;d<len;d++){
//给所有li添加一个id的属性,值为d,作为当前li的索引
option[d].id=d;
option[d].onclick=function(){
//改变index为当前li的id值
index=this.id;
//调用changeImg,实现切换图片
changeImg();
}
}
}
//切换图片
function changeImg(){
//遍历banner下的div及option下所有的li,将div其隐藏,将li清除类
for(var i=0;i<len;i++){
pics[i].style.display="none";
option[i].className="";
}
//根据index索引找到当前div和当前li,将其显示出来和设为当前
pics[index].style.display="block";
option[index].className="active";
}
slideImg();
正在回答
因为你没有给上面设置鼠标放上去的时候停止轮播,你只给下面的main设置了,你需要给box设置才对。
祝学习愉快!
- 参与学习 人
- 提交作业 11218 份
- 解答问题 36712 个
从一个不会编程的小白到一个老司机是需要过程的,首先得入门,学习基础知识,然后才能进阶,最后再到精通,本专题是你走进前端世界的不二选择!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星