function $(id){
return typeof id==='string'?document.getElementById(id):id;
}
window.onload=function(){
//标签的索引
var index=0;
var timer=null;
var lis=$('notice-tit').getElementsByTagName('li'),
divs=$('notice-con').getElementsByTagName('div');
if(lis.length!=divs.length) return;
//遍历所有页签
for(var i=o;i<lis.length;i++) {
lis[i].id = i;
lis[i].onmouseover = function{
//用that变量来引用当前li;
var that=this;
//如果存在准备执行的定时器,立即清除;只有当时时间大于500ms开始执行;
if(timer){
clearTimeout(timer);
timer=null;
}
//延迟半秒执行;
timer=setTimeout(function(){
for(var j=0; j<lis.length;j++){
lis[j].className='';
divs[j].style.display='none';
}
lis[that.id].className='select';
divs[that.id].className='block';
},5000);
}
}
}
求高手帮我看下,那里错了我效果实现不了~~~~
lis[i].onmouseover = function{
这句后面少了()
应该是 lis[i].onmouseover = function (){
代码没有问题,应该是你写的setTimeout(function(){},5000);你写了5000,就是5秒了,太久了,
随便看了下, onmouseover 这个,算是回调函数(反正我这么理解的)。
这样的话 ,每次调用到的i就会是 li.length的值,所以 出错。
你试试 换成匿名函数.
(function(i){
lis[i].id = i;
lis[i].onmouseover = function{
//用that变量来引用当前li;
var that=this;
//如果存在准备执行的定时器,立即清除;只有当时时间大于500ms开始执行;
if(timer){
clearTimeout(timer);
timer=null;
}
//延迟半秒执行;
timer=setTimeout(function(){
for(var j=0; j<lis.length;j++){
lis[j].className='';
divs[j].style.display='none';
}
lis[that.id].className='select';
divs[that.id].className='block';
},5000);
}
})(i);//你自己试试。