为了账号安全,请及时绑定邮箱和手机立即绑定

求助!!! 想写一个判断键盘事件,但if语句无效不管按什么键都会直接执行if里面的代码,这是什么情况??

    // 键盘事件
    document.onkeyup=function(){
        e = event || window.event;
        e.preventDefault();
        e.returnValue=false;
        if(e.keyCode == 37 || 38){
            index--;
            if(index<0){
                index=as.length - 1;
            }
            for(var j=0;j<as.length;j++){
                as[j].style.backgroundColor='#fff';
            }
            as[index].style.backgroundColor='#ccc';
        }
        if(e.keyCode == 39 || 40){                                
            index++;
            if(index>=as.length){
                index=0;
            }
            for(var j=0;j<as.length;j++){
                as[j].style.backgroundColor='#fff';
            }
            as[index].style.backgroundColor='#ccc';        
        }
        if(e.keyCode == 13){
            title.innerHTML=as[index].innerHTML;
            menu.style.display='none';
            index=-1;
        }
    }


正在回答

5 回答

#1

白泽黑冥 提问者

请问,括号里的那个e到底是什么意思?
2016-11-23 回复 有任何疑惑可以回复我~
#2

白泽黑冥 提问者

非常感谢你能回答我的问题。(^v^)
2016-11-23 回复 有任何疑惑可以回复我~

e就是事件对象event

0 回复 有任何疑惑可以回复我~

0.0

0 回复 有任何疑惑可以回复我~

客气了

是element 简化了  

是不就差这个  就跳出来

 好好学习天天向上

0 回复 有任何疑惑可以回复我~
#1

白泽黑冥 提问者

不是哦,我是if里面的条件写错了,想当然写成了 if(e.keyCode == 37 || 38),但实际上应该是 if(e.keyCode == 37 || e.keyCode == 38)。 貌似是因为&&,||,!这些运算符的优先级更高,导致我写的其实是一个判断(e.keyCode == 37 )加一个非零的值(38),得到的就是永真(假||真=真),所以会自动运行。。。至于那个括号里,我没写东西,貌似也能正常运行,但是看源码里写了,不知道有什么用。
2016-11-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
DOM事件探秘
  • 参与学习       99545    人
  • 解答问题       1197    个

DOM事件?本课程会通过实例来给小伙伴们讲解如何使用这些事件

进入课程

求助!!! 想写一个判断键盘事件,但if语句无效不管按什么键都会直接执行if里面的代码,这是什么情况??

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信