From Javascript's Kiss

两个需求:第一,优化自动切换的性能,记录上一个li的索引,在将要显示的当前li隐藏掉上一个,显示当前的,避免使用循环做判断;第二,鼠标移动到内容ul的时候,停止切换,并且记录setInterval已经执行的时间,在mouseout的时候在接下来的时间里继续执行轮询。

注解:对于网友测试发现的一系列问题,比如:做连续点击的时候,有些不好用;为什么点一下当前标签 会取消高亮;我也觉得.而且,连续带内击的时候,有时候会刚刚点,就已经跳过去了。因此:对代码进行了修改,主要是修改了每个li的click事件的处理函数的代码,其他都没变化。

查看源码

for (var i = 0, l = controls.length; i < l; i++) {
   (function(cur){
      addListener(controls[cur], "click", function(e){
         clearInterval(interval);
         clearTimeout(timeout);
         un_controls[cur_index].className = "";
         un_controls[cur].className = "active";
         controls[cur_index].className = "";
         this.className = "hightlight";
         cur_index = cur;
         scrollTab();
      });
   })(i);
}