自己做的,但是出了问题了,无法解决了。请求支援~!~!
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>轮播图项目作业</title> <link rel="stylesheet" href="css/index.css"> </head> <body> <div id="container"> <ul id="navigation"> <li >首页</li> <li>点击看看</li> <li>会自动的</li> <li>我的网站</li> </ul> <img id="placeholder" src="img/1.jpg" alt="图片" > </div> <script src="js/index.js"></script> </body> </html>
*{ padding:0; margin: 0; font-size: 22px; } #container{ width: 600px; height: 230px; margin: 100px auto 0; text-align: center; box-shadow: 0 8px 24px -12px; border: 1px solid #ccc; border-radius: 5px; } ul{ list-style: none; font-size: 0; } ul li{ display: inline-block; width: 150px; height: 40px; line-height: 40px; background: #fff; cursor:pointer; } #placeholder{ width: 100%; height: 100%; } /* 选中样式,默认是第一个有这个样式 */ .selected{ background-color: #ffcc00; color: #666; border-radius: 5px; }
// 父容器 var container = document.getElementById('container'); // 获取 li var ul = document.getElementById('navigation'); var list = ul.getElementsByTagName('li'); // 获取图片占位符 var placeholder = document.getElementById('placeholder'); // 把图片路径直接存储在数组中,因为大多数情况,图片命名是字母而不是数字。 var num = ["img/1.jpg", "img/3.jpg", "img/4.jpg", "img/5.jpg"]; // 循环遍历,拿到每一个li标签 for (var i = 0; i < list.length; i++) { // 设置 自定义索引值,方便获取到它们,去修改对应的图片 list[i].setAttribute('index', i); list[0].className = 'selected'; // 当鼠标滑过每一个li标签,给它添加class类 list[i].onmousemove = function () { // 当鼠标进入前应该清除所有 class 类名 for (var j = 0; j < list.length; j++) { list[j].removeAttribute('class'); } // 获取索引值 var index = this.getAttribute('index'); // 只有当前鼠标经过元素才添加XX类名 list[index].className = 'selected'; // 修改图片,从数组中取到对应的 索引数据直接赋值给 placeholder 的src 属性 placeholder.src = num[index]; }; } // 自动播放 // 假设index 是数组的索引 var index = 0; // 创建 open定时器 var open = setInterval(function () { // 当定时器开始时,就把list 的类,设置为空 list[index].className = ' '; // 索引值 每隔2秒自增1 index++; // num[0] --> 第一张图 == num[index] = 0 ---> 每2秒 ,0 变成 1 // num[1] --> 第二张图 == num[index] = 1 ---> 每2秒 ,1 变成 2 // num[2] --> 第三张图 == num[index] = 2 ---> 每2秒 ,2 变成 3 // num[3] --> 第四张图 == num[index] = 3 ---> 每2秒 ,3 变成 4 placeholder.src = num[index]; // 当假设索引值 超过 数组最大索引,则让它 等于 0,意思是让它回到第一张图 if (index > num.length -1) { index = 0; } // 只有当前鼠标经过元素才添加XX类名 list[index].className = 'selected'; }, 2000);
问题1: 自动轮播第二轮往后,第一张图都是无法获取!
问题2: 定时器无法关闭问题。
真心弄了一个小时都没办法做出来。这些都是自己想的,没去抄袭答案。
1
收起
正在回答
1回答
这里是顺序问题,调整如下即可:
定时器关闭需要在鼠标移开的事件中,清除定时器,同学尝试着自己将这部分写一下哦
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星