document.onkeyup = function(event){
event = event||window.event;
if(event.keyCode==40){
index++;
if(index>=as.length) index=0;
for(var i=0; i<as.length;i++){
as[i].style.background = '#fff';
}
as[index].style.background = '#ccc';
}
if(event.keyCode==38){
index--;
if(index<0) index=as.length-1;
for(var i=0; i<as.length;i++){
as[i].style.background = '#fff';
}
as[index].style.background = '#ccc';
}
if(event.keyCode==13){
for(var i=0; i<as.length;i++){
as[i].style.background = '#fff';
}
title.innerHTML = as[index].innerHTML;
menu.style.display = 'none';
}
}
}
为何每次都要在循环中先重置背景颜色
for(var i=0; i<as.length;i++){
as[i].style.background = '#fff';
}
,不能直接写成下面这样呢?
for(var i=0; i<as.length;i++){
var index=i;
as[index].style.background = '#ccc';
}
个人理解是每次键盘按下之后,这段代码都会执行一遍,首先把之前的样式清空,之后根据按下那个键来更改样式。至于把i赋值给index,会改变index的值。对后面的语句会有影响的。如果要这样写的话,就要用函数封装,这样才不会更改index的值。
如果不重置的话,之前的样式会有残留。