求解:鍵盤事件只能執(zhí)行一次
window.onload=function(){
????????var?box=document.getElementById('divselect'),
????????????title=box.getElementsByTagName('cite')[0],
????????????menu=box.getElementsByTagName('ul')[0],
????????????as=box.getElementsByTagName('a'),
????????????index=-1,
????????????flag=0;
????????//鍵盤事件
????????document.onkeyup=function(e){
????????????e=e||window.event;
????????????if(e.keyCode==13){
????????????????menu.style.display='block';
????????????????flag=1;
????????????????document.onkeyup=function(e){
????????????????????e=e||window.event;
????????????????????if(e.keyCode==40){????????//按下方向鍵
????????????????????????clear();
????????????????????????index++;
????????????????????????if(index>=as.length){
????????????????????????????index=0;
????????????????????????}
????????????????????????change();
????????????????????}
????????????????????if(e.keyCode==38){????????//按上方向鍵
????????????????????????clear();
????????????????????????index--;
????????????????????????if(index<0){
????????????????????????????index=as.length-1;
????????????????????????}
????????????????????????change();
????????????????????}
????????????????????if(e.keyCode==13?&&?index!=-1){
????????????????????????title.innerHTML=as[index].innerHTML;
????????????????????????menu.style.display='none';
????????????????????????index=-1;
????????????????????}else?if(e.keyCode==13?&&?flag==1){
????????????????????????menu.style.display='none';
????????????????????????flag=0;
????????????????????}
????????????????????return?flag,index;
????????????????}
????????????}
????????????function?clear(){
????????????????for(var?i=?0,l=as.length;i<l;i++){
????????????????????as[i].style.background='#fff';
????????????????????as[i].style.color='#333';
????????????????}
????????????}
????????????function?change(){
????????????????as[index].style.background='#333';
????????????????as[index].style.color='#fff';
????????????}
????????}
????????//?點擊三角時
????????title.onclick=function(event){
????????????//list粗線
????????????event=event||window.event;
????????????if(event.stopPropagation){
????????????????event.stopPropagation();
????????????}else{
????????????????event.cancelBubble=true;
????????????}
????????????menu.style.display='block';
????????????for(var?i=?0,l=as.length;i<l;i++){?????????//滑過變色
????????????????as[i].onmouseover=function(){
????????????????????this.style.background='#333';
????????????????????this.style.color='#fff';
????????????????};
????????????????as[i].onmouseout=function(){
????????????????????this.style.background='#fff';
????????????????????this.style.color='#333';
????????????????};
????????????????as[i].onclick=function(e){
????????????????????e=e||window.event;
????????????????????if(e.stopPropagation){
????????????????????????e.stopPropagation();
????????????????????}else{
????????????????????????e.cancelBubble=true;
????????????????????}
????????????????????menu.style.display='none';??????????????//list消失
????????????????????title.innerHTML=this.innerHTML;?????????//改變標題
????????????????}
????????????}
????????}
????????document.onclick=function(){
????????????menu.style.display='none';
????????}代碼如上,用鍵盤操作一次后,再次按回車鍵就沒反應了,請問是什么原因?
html和css均未修改
2016-07-28
補充:鼠標問題沒有問題