window.addEventListener('load',function(){ var arrow_l = document.querySelector('.arrow-l'); var arrow_r = document.querySelector('.arrow-r'); var focus = document.querySelector('.focus'); focus.addEventListener('mouseenter',function(){ arrow_l.style.display = 'block'; arrow_r.style.display = 'block'; clearInterval(timer); timer = null; }) focus.addEventListener('mouseleave',function(){ arrow_l.style.display = 'none'; arrow_r.style.display = 'none'; timer = setInterval(function(){ arrow_r.click(); },2000) }) var ul = focus.querySelector('ul'); for(var i = 0; i < ul.children.length; i++){ var li = this.document.createElement('li'); var ol = focus.querySelector('.circle'); var focusWidth = focus.offsetWidth; li.setAttribute('index',i); ol.appendChild(li); li.addEventListener('click',function(){ for(var i = 0; i < ol.children.length; i++){ ol.children[i].className = ''; } this.className = 'current'; var index = this.getAttribute('index'); num = index; circle = index; animate(ul,-index * focusWidth - 40 ); }) } ol.children[0].className = 'current'; var first = ul.children[0].cloneNode(true); ul.appendChild(first); //右侧按钮事件 var num = 0; var circle = 0; var flag = true; //这里的flag就是节流阀 arrow_r.addEventListener('click',function(){ if(flag){ //如果flag为真,就执行下面的,条件不写就是默认为真 flag = false; //先关闭节流阀 if(num == ul.children.length - 1){ ul.style.left = -40; num = 0; } num++; animate(ul,-num * focusWidth-40,function(){ //添加一个function回调函数 flag = true; //打开节流阀 }); circle++; if(circle == ol.children.length){ circle = 0; } circleChange(); } }); //左侧按钮做法(这个按钮的节流阀跟上面一样写) arrow_l.addEventListener('click',function(){ if(flag){ flag = false; if(num == 0){ num = ul.children.length - 1; ul.style.left = -num * focusWidth + 'px'; } num--; animate(ul,-num * focusWidth-40,function(){ flag = true; }); circle--; if(circle < 0){ circle = ol.children.length - 1; } circleChange(); } }); function circleChange(){ for(var i = 0; i < ol.children.length; i++){ ol.children[i].className = ''; } ol.children[circle].className = 'current'; } var timer = this.setInterval(function(){ arrow_r.click(); },2000); })