老师,我想问下,手动切换选项为什么切换不到对应的图片?
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 星