不能实现自动轮播,请问是哪里的问题,请指教
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <!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 > |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | /*全局定义*/ *{ 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); } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | 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积分~
来为老师/同学的回答评分吧