你好 1.图片自动轮播不了 不知问题所在 2.if(timer)这一步为真代表着什么?怎样是真和假
//HTML <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>轮播图</title> <link rel="stylesheet" type="text/css" href="css/轮播图.css"> </head> <body> <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> </div> <!-- 上一张下一张按钮 不作跳转 --> <a href="javascript:void(0)" class="button prve"></a> <a href="javascript:void(0)" class="button next"></a> <!-- 圆点导航 --> <div class="dots"> <span class="active"></span> <span></span> <span></span> </div> </div> <script type="text/javascript" src="js/script.js"></script> </body> </html> //CSS *{ padding: 0; margin: 0; } ul{ list-style: none; } body{ font-family: "微软雅黑"; color:#14191e; } .main{ width:1200px; height: 460px; margin:30px auto; overflow:hidden; position: relative; } .main .banner{ width:1200px; height:460px; overflow:hidden; position: relative; } .main .banner .banner-slide{ width:1200px; height:460px; background-repeat: no-repeat; position: absolute; display: none; } .main .banner .slide-active{ display: block; } /*相对路径是相对于当前文件 轮播图.css*/ .main .banner .slide1{ background-image:url("../img/bg1.jpg"); } .main .banner .slide2{ background-image: url("../img/bg2.jpg"); } .main .banner .slide3{ background-image: url("../img/bg3.jpg"); } .main .button{ position: absolute; width:40px; height: 80px; left:244px; top:50%; margin-top:-40px; background:url("../img/arrow.png") no-repeat center center; } /*兼容浏览器*/ .button:hover{ background-color: #333;/*灰色*/ opacity: 0.8; filter: alpha(opacity=80); } /*旋转180度*/ .main .prve{ transform: rotate(180deg); } .main .next{ /*上面设置过了left 需要覆盖 left比right先起作用*/ left:auto; right:0; } .main .dots{ position: absolute; right:20px; bottom:24px; text-align: right; } .main .dots span{ /*变成块 可以显示 不太理解*/ display: inline-block; width: 12px; height:12px; line-height: 12px; border-radius: 50%; background-color: rgba(7,17,27,0.4); /*阴影 水平方向 垂直方向 阴影距离 模糊程度*/ box-shadow: 0 0 0 2px rgba(255,255,255,0.8) inset; margin-left:8px; cursor: pointer; } .main .dots .active{ box-shadow:0 0 0 2px rgba(7,17,27,0.4) inset; background:#fff; } //SCRIPT //封装getElementById()的方法 function byId(id){ return typeof(id)==="string"?document.getElementById(id):id; } // console.log(byId("main")); //实现自动轮播,当鼠标悬浮时暂停,离开时继续 var main=byId("main"), pics=byId("banner").getElementsByTagName("div"), index=0, timer=null, len=pics.length; function slideImg(){ 滑过清除计时器 离开继续 是我不理解的地方 main.onmouseover=function(){ if(timer) clearInterval(); } 离开时 main.onmouseout=function(){ timer=setInterval(function{ index++; if(index=len) index=0; changeImg(); },3000); } main.onmouseout(); } function changeImg(){ //遍历banner下的多个div将其隐藏 for(var i=0;i<len;i++){ pics[index].style.display:none; } //根据index找到当前div将其显示出来 pics[index].style.display:block; } slideImg();
0
收起
正在回答
1回答
1、
1)
首先添加变量:
dots = document.getElementsByClassName("dots")[0].getElementsByTagName("span")
2)添加括号
3) pics[index].style.display:none; 应改为 pics[i].style.display = "none";
pics[index].style.display:block; 同理
4)
下图红框中的len不是一样的,下边的红框应该是
dots.length。(我们在第一条建议中获取了dots变量)
5)、在clearInteral()中传入参数timer
修改后的js如下:
js:
var main=byId("main"), pics=byId("banner").getElementsByTagName("div"), index=0, timer=null, dots = document.getElementsByClassName("dots")[0].getElementsByTagName("span"), len=pics.length; //封装getElementById()的方法 function byId(id){ return typeof(id)==="string"?document.getElementById(id):id; } // console.log(byId("main")); //实现自动轮播,当鼠标悬浮时暂停,离开时继续 //滑过清除计时器 离开继续 是我不理解的地方 function slideImg(){ main.onmouseover=function(){ if(timer) clearInterval(timer); } //离开时 main.onmouseout=function(){ timer=setInterval(function(){ index++; if(index>=len){ index=0; } changeImg(); },3000); } main.onmouseout(); } function changeImg(){ for(var i=0,len1=dots.length;i<len1;i++){ dots[i].className = ""; pics[i].style.display = "none"; } dots[index].className = "active"; pics[index].style.display = "block"; } slideImg();
2 关于“ if(timer)这一步为真代表着什么?怎样是真和假 ”
1)、if(timer)这一步为真的的话执行clearInterval();这个方法。
2)、
js中表示布尔类型的数值不只是true和false,还有其他的
If 语句判断为false的变量值为false, 例如: 0, 0.0, null, undefined
其他变量值判断为true,例如:true, 1, [任何字串/数字]
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星