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

来源:5-1 编程挑战

白泽黑冥

2016-11-22 12:38

    // 键盘事件
    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;
        }
    }


写回答 关注

4回答

  • weibo_她舅他二舅都是他舅_0
    2016-11-22 16:51:00
    已采纳

    ...function(e){

    ...

    }

    白泽黑冥

    非常感谢你能回答我的问题。(^v^)

    2016-11-23 11:05:54

    共 2 条回复 >

  • qq_迸发激情_0
    2017-12-27 20:50:12

    e就是事件对象event

  • weibo_她舅他二舅都是他舅_0
    2016-11-23 15:19:29

    0.0

  • weibo_她舅他二舅都是他舅_0
    2016-11-23 14:48:54

    客气了

    是element 简化了  

    是不就差这个  就跳出来

     好好学习天天向上

    白泽黑冥

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

    2016-11-23 15:07:16

    共 1 条回复 >

DOM事件探秘

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

99545 学习 · 1197 问题

查看课程

相似问题