不能实现自动轮播,请问是哪里的问题,请指教
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>js轮播图</title> <link rel="stylesheet" type="text/css" href="css/jstyle.css"> <script type="text/javascript" src="js/index.js"></script> </head> <body> <div class="canvas" id="main"> <!--切换项标题--> <div class="title" > <ul id="item"> <div class="active"><a href="#">首页</a></div> <div class=""><a href="#">点击看看</a></div> <div class=""><a href="#">会自动的</a></div> <div class=""><a href="#">我的网站</a></div> </ul> </div> <!--切换项内容--> <div class="box" id="photoes"> <div class="slide one picActive"></div> <div class="slide two"></div> <div class="slide three"></div> <div class="slide four"></div> </div> </div> </body> </html>
/*全局定义*/ *{ margin: 0; padding: 0;} .canvas{ width: 1000px; height:553px; margin: 0 auto; } /*切换项标题*/ .title{ width: 1000px; height: 50px; } .title ul{ width: 1000px; height: 50px; } .title ul>div{ width: 250px; line-height: 50px; float: left; text-align: center; background-color:#fff; } .title .active{ background-color:#ffcc00; border-radius: 8px; cursor: pointer; } .title ul>div a{ font-size: 24px; color:#666; text-decoration: none; } /*切换项内容*/ .box{ width: 1000px; height: 500px; overflow: hidden; } .slide{ width: 100%; height: 100%; float: left; display: none; } .picActive{ display: block; } .one{ background-image: url(../img/1.jpg); } .two{ background-image: url(../img/3.jpg); } .three{ background-image: url(../img/4.jpg); } .four{ background-image: url(../img/5.jpg); }
window.onload=function(){ //声明全局变量 var timer=null,//间歇调用次数 index=0,//index为当前索引 item=byId('item'),//标题项 items=item.getElementsByTagName('div'), size=items.length, photoes=byId('photoes').getElementsByTagName('div'), pics=photoes.length; //兼容不同浏览器的事件方法 function addHandler(element, type, handler) { if (element.addEventListener) { element.addEventListener(type, handler, true); } else if (element.attachEvent) { element.attachEvent('on' + type, handler); } else { element['on' + type] = handler; } } //封装获得id的方法 function byId(id){ return typeof(id)==="string"?document.getElementById(id):id; } //使用间歇调用,每秒切换图片 function startAutoPlay(){ timer = setInterval(function(){ index++; if (index>pics) { index=0; } changeImg(); },1000) } //停止图片轮播 function stopAutoPlay(){ if (timer) { clearInterval(timer); } } //使图片自动轮播 function changeImg(){ for (var j = 0; j < pics; j++) { photoes[j].style.display='none'; items[j].className=''; } photoes[index].style.display='block'; items[index].className='active'; } function slideImg(){ startAutoPlay(); var main=byId('main'); addHandler(main,'mouseout',startAutoPlay()); addHandler(main,'mouseover',stopAutoPlay()); } // 点击选项跳转图片 //遍历title选项,获得新建属性索引 for (var m = 0; m < size; m++) { items[m].setAttribute('data-index',m); //绑定title每个选项的click事件 addHandler(items[m],'click',function(){ for (var i = 0; i < size; i++) {//遍历让所有选项卡图片隐藏,类名为空, photoes[i].style.display='none'; items[i].className=''; } //使被点击的选项处于激活状态,并跳转图片 index=this.getAttribute('data-index'); photoes[index].style.display='block'; items[index].className='active'; }) } addHandler(window,'load',slideImg); }
6
收起
正在回答
2回答
同学你好, 对于的问题解答如下
自动轮播中的判断条件应该改成index 大于等于图片的长度
如下图所示,图片重复显示了
建议: 可以适当调整盒子的高度,让图片刚好铺满盒子显示
同时需要调整最外层盒子的高度
给大盒子绑定鼠标移入移出事件写法有误,建议修改: 只传入函数名就可以了
橙色背景选项卡字体没有加粗显示, 建议:可以给active添加font-weight属性
如果帮助到了你, 欢迎采纳!
祝学习愉快~~~~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星