Classic_js を使用してマウスとキーボードの選択ドロップダウン メニューをすばやく実装します (詳細なコードの説明)

php是最好的语言
リリース: 2018-07-25 10:07:23
オリジナル
1631 人が閲覧しました

コードを整理するのに数時間を費やし、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(&#39;pselect&#39;),
     title=box.getElementsByTagName(&#39;cite&#39;)[0],
     menu=box.getElementsByTagName(&#39;ul&#39;)[0],
     as=box.getElementsByTagName(&#39;a&#39;),
     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

ビデオ チュートリアル: さまざまなドロップダウン メニューの実装

以上がClassic_js を使用してマウスとキーボードの選択ドロップダウン メニューをすばやく実装します (詳細なコードの説明)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!