问答详情
源自:5-1 编程挑战

onkeyup事件中的循环为何要这样写?

 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';

}


提问者:蛋黄酱 2016-02-14 17:42

个回答

  • 鲈先森
    2016-03-08 11:28:48

    个人理解是每次键盘按下之后,这段代码都会执行一遍,首先把之前的样式清空,之后根据按下那个键来更改样式。至于把i赋值给index,会改变index的值。对后面的语句会有影响的。如果要这样写的话,就要用函数封装,这样才不会更改index的值。

  • jech
    2016-02-14 20:49:39

    如果不重置的话,之前的样式会有残留。