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);
}