慕标6631155
2016-09-30 10:30
想加个定时器让它自动切换怎么加??
// JavaScript Document
function bind(els,eventType,callback){
if( typeof els.addEventListener==='function'){
els.addEventListener(eventType,callback,false);//标准事件绑定方法
}else if(typeof els.attechEvent==='function'){
els.attechEvent('on'+eventTyep,callback);//IE事件绑定方法
}
}
function mouseoverlist(e){
var target=e.target||e.srcElement;
var box=document.getElementById('box');//取得外部元素
var list=box.getElementsByTagName('li');//取得每个列表项
for(var i=0;i<list.length;i++){
list[i].className='item';
}
while(target.tagName != 'LI' || target.tagName == 'BODY'){
target = target.parentNode;
}
//给当前元素加上class big
target.className = 'item big';
}
function intlist(){
var box=document.getElementById('box');//取得外部元素
var list=box.getElementsByTagName('li');//取得每个列表项
for(var i=0; i<list.length;i++){
bind(list[i],'mouseover',mouseoverlist);//对每个列表绑定鼠标悬停事件的监听
}
}
intlist();//执行函数
对了,要在mouseover函数首部清除循环。clearInterval(timer);
//在bind(list[i],'mouseover',mouseoverlist);后面再加一个bind(list[i],'mouseover',mouseout);
//然后定义mouseout函数
function mouseout() {
timer=setInterval(function(){
var list=document.getElementsByTagName("li");
for(var i=0;i<list.length;i++){
console.log("******************************");
console.log("i="+i);
console.log("list["+i+"].className="+list[i].className);
if(list[i].className.indexOf("big") > 0 ){
console.log("-------------");
list[i].className=list[i].className.replace('big','');
console.log("list["+i+"].className="+list[i].className);
var j=i+1;
if(j==5){j=0};
console.log("j="+j);
console.log("下一个的当前"+list[j].className)
list[j].className=list[j].className+" big";
console.log("下一个的改变后"+list[j].className);
console.log("-------------");
break;
}
console.log("******************************");
}
},2000)
}
console.log是我测试时用的可以删掉,妹的,因为一个==判断写成了=害的我改了半天。 = =
把事件绑定去了,切换li的big类使用setInterval来切换就好了,这个应该更简单啊
手风琴效果
40803 学习 · 115 问题
相似问题