• 技术文章 >web前端 >js教程

    经典_用js快速实现鼠标和键盘选择下拉菜单(代码详解)

    php是最好的语言php是最好的语言2018-07-25 10:07:23原创951
    花了几小时整理了一下代码,怎样用js实现鼠标选择和键盘操作下拉菜单,非常经典的案例实战。js实现在鼠标经过时,改变字体的颜色和背景,然后下拉菜单显示。一般情况下,下拉菜单处于隐藏的状态。

    <!doctype html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <title>下拉菜单</title>
      <style type="text/css">
      body,ul,li{ margin:0; padding:0; font-size:13px;}
      ul,li{list-style:none;}
      #pselect{width:186px; margin:80px auto; position:relative; z-index:10000;}
      #pselect cite{width:150px; height:24px;line-height:24px; display:block; color:#807a62; cursor:pointer;font-style:normal;
        padding-left:4px; padding-right:30px; border:1px solid #333333; 
        background:url(xjt.png) no-repeat right center;}
        #pselect ul{width:184px;border:1px solid #333333; background-color:#ffffff; position:absolute; z-index:20000; margin-top:-1px; display:none;}
        #pselect ul li{height:24px; line-height:24px;}
        #pselect ul li a{display:block; height:24px; color:#333333; text-decoration:none; padding-left:10px; padding-right:10px;}
      </style>
      <script type="text/javascript">
        window.onload=function(){
         var box=document.getElementById('pselect'),
         title=box.getElementsByTagName('cite')[0],
         menu=box.getElementsByTagName('ul')[0],
         as=box.getElementsByTagName('a'),
         index=-1;
         
        // 点击三角时   // 执行脚本
        //显示选项面板
        title.onclick=function(event){
          
          event = event || window.event;//控制浏览器兼容
          //取消冒泡事件
              if(event.stopPropagation){//非ie
                event.stopPropagation();
              }else{
                event.cancleBubble = true;//ie
              }
              menu.style.display = "block";
              document.onkeydown = function(e){
                e = e || window.event;
                if(e.keyCode == 38){//下键
                  index++;
                  if(index == as.length){
                    index = 0;
                  }
                  resetAs();
                  as[index].style.background = "#567";
                }else if(e.keyCode == 40){//上键
                  index--;
                  if(index<0){
                    index = as.length - 1;
                  }
                  resetAs();
                  as[index].style.background = "#567";
                }else if(e.keyCode == 13){ //enter键
                  e.preventDefault?e.preventDefault():e.returnValue = false;
                  title.innerHTML = as[index].innerHTML;
                  index = -1;
                  menu.style.display = "none";
                  resetAs();
                }
              }
              
              
            }  
            
            /*重置所有选项的背景*/
    
            function resetAs(){
              for(var i = 0,l = as.length;i<l;i++){
                as[i].style.background = "#FFF";
              }
            }
            
       // 滑过滑过、离开、点击每个选项时
       
          // 执行脚本
          for(var i = 0;i<as.length;i++){
            as[i].onmouseover = function(){
              this.style.background = "#567";
            };
            as[i].onmouseout = function(){
              this.style.background = "#FFF";
            };
            as[i].onclick = function(event){
              //取消冒泡事件
              if(event.stopPropagation){//非ie
                event.stopPropagation();
              }else{
                event.cancleBubble = true;//ie
              }
              title.innerHTML = this.innerHTML;
              menu.style.display = "none";
            }
            
          }
          
          
           // 点击页面空白处时 隐藏选项面板
           // 执行脚本
           document.onclick = function(){
            menu.style.display = "none";
          }
          
    
          
        }
      </script>
    </head>
    <body>
     <p id="pselect">
      <cite>请选择分类</cite>
      <ul>
       <li id="li"><a href="javascript:;" selectid="1">ASP开发</a></li>
       <li><a href="javascript:;" selectid="2">.NET开发</a></li>
       <li><a href="javascript:;" selectid="3">PHP开发</a></li>
       <li><a href="javascript:;" selectid="4">Javascript开发</a></li>
       <li><a href="javascript:;" selectid="5">Java特效</a></li>
     </ul>
    </p>
    </body>
    </html>

    相关推荐:

    使用Javascript实现选择下拉菜单互移并排序_jquery

    视频教程:形形色色的下拉菜单实现

    以上就是经典_用js快速实现鼠标和键盘选择下拉菜单(代码详解)的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:js二次封装数组的使用介绍(代码) 下一篇:TypeScrip的重新改造问题以及解决问题的方案
    Web大前端开发直播班

    相关文章推荐

    • 聊聊Angular中组件之间怎么通信• ie8是否支持es6• 怎么获取Node性能监控指标?获取方法分享• Angular如何对请求进行拦截封装?• 浅析Angular中怎么用 Api 代理

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网