// 滑过滑过、离开、点击每个选项时
// 执行脚本
for(var i=0;i<as.length;i++){
as[i].onmouseover=function(){
this.style.background='#456';
}
as[i].onmouseout=function(){
this.style.background='#fff';
}
}
你把代码改成这样
as[i].onmouseover=function(){ this.style.background='#456'; alert(i); }
看看弹出的i是不是循环里一直增长的值就知道为什么了,如果非要用as[i],可以试下这么写
(function(i){ as[i].onmouseover=function(){ as[i].style.background='#456'; } }(i));
是这样的,你只是使用循环对a这个序列添加事件,所以当你点击的时候a的任意一个元素的时候,每个元素的事件早就添加完了。也就是说这时候的事件处理函数中的i等于序列的长度-1,而不会等于你点击那个元素在序列中的索引号。
你百度下“闭包问题”就明白了