jsはカスタムドロップダウンボックスを実装します

jsはカスタムドロップダウンボックスを実装します

この記事の例では、カスタムドロップダウンボックスを実装するためのjsの具体的なコードを参考までに共有しています。具体的な内容は次のとおりです。

実装のアイデア:

(1)リストとスパンタグ(どのタグでも可)を作成します。

(2)リスト内の各項目にクリックイベントをバインドします。項目をクリックすると、スパンコンテンツがその項目のコンテンツに変わり、リストが非表示になります。

(3)まずリストを非表示にするには、spanタグをクリックして表示します。何も選択されていない場合は、ドキュメントをクリックしてリストを非表示にします。

(4)キーボードの各キーには独自のキーコードがあります。このキーコードを使用して、対応する操作を実行するためにどのキーが押されたかを判断することができます。次の関数は、キーボードのキーコードを取得できます。

document.addEventListener("keyup",function(e){
                console.log(e.keyCode)
})

コアコード: キーボードの上下キー、Enterキーによってトリガーされるコンテンツ

//キーボード押下イベント document.addEventListener("keyup",function(e){
                    var e=e||window.e;
                    リセット()
                    //上キー if(e.keyCode=="38"){
                        索引 - ;
                        if(インデックス<0){
                            インデックス=リスト.長さ-1
                        }
                    }
                    //下キーif(e.keyCode=="40"){
                        インデックス++;
                        if(インデックス>リストの長さ-1){
                            インデックス=0
                        }
                    }
                    //確認キーを入力if(e.keyCode=="13"){
                        cite.innerHTML=リスト[インデックス].innerHTML;    
                        ul.style.display="なし";    
                        戻る ;
                    }
                    リスト[インデックス].className="bg";
                    
})

完全なコード:

<!doctypehtml>
<html lang="ja">

    <ヘッド>
        <メタ文字セット="UTF-8">
        <title>ドロップダウン メニュー</title>
        <スタイル タイプ="text/css">
            体、
            ウル、
            li {
                マージン: 0;
                パディング: 0;
                フォントサイズ: 13px;
            }
            
            ウル、
            li {
                リストスタイル: なし;
            }
            
            .div選択{
                幅: 186ピクセル;
                マージン: 80px 自動;
                位置: 相対的;
                zインデックス: 10000;
            }
            
            .divselect 引用 {
                幅: 150ピクセル;
                高さ: 24px;
                行の高さ: 24px;
                表示: ブロック;
                色: #807a62;
                カーソル: ポインタ;
                フォントスタイル: 通常;
                左パディング: 4px;
                右パディング: 30px;
                境界線: 1px 実線 #333333;
            }
            
            .divselect ul {
                幅: 184ピクセル;
                境界線: 1px 実線 #333333;
                背景色: #ffffff;
                位置: 絶対;
                zインデックス: 20000;
                上マージン: -1px;
                表示: なし;
            }
            
            .divselect ul li {
                高さ: 24px;
                行の高さ: 24px;
            }
            
            .divselect ul li a {
                表示: ブロック;
                高さ: 24px;
                色: #333333;
                テキスト装飾: なし;
                左パディング: 10px;
                右パディング: 10px;
            }
            .divselect ul li:hover{
                 背景: #eee;
            }
            .bg{
                背景: #eee;
            }
        </スタイル>

    </head>

    <本文>
        <div class="divselect">
            <span>カテゴリを選択するにはクリックしてください</span>
            <ul>
                <li>
                    <a href="javascript:;">ASP 開発</a>
                </li>
                <li>
                    <a href="javascript:;">.NET 開発</a>
                </li>
                <li>
                    <a href="javascript:;">PHP 開発</a>
                </li>
                <li>
                    <a href="javascript:;">Javascript 開発</a>
                </li>
                <li>
                    <a href="javascript:;">Java エフェクト</a>
                </li>
            </ul>
        </div>
        <script type="text/javascript">
            var cite = document.querySelector ("span"), //選択されたコンテンツ ul = document.querySelector ("ul"), //リスト list = document.querySelectorAll ("a"), //選択された項目 index = -1; //インデックス //表示するリストをクリック cite.addEventListener ("click", function (e) {
                    var e=e||window.e;
                    e.stopPropagation(); //ドキュメントにバインドされた非表示のイベントがトリガーされないようにバブリングを停止します ul.style.display="block";
                })
                //クリックを各リスト項目にバインド for(var i=0;i<list.length;i++){
                    リスト[i].onclick=関数(){
                        cite.innerHTML=this.innerHTML;    
                        ul.style.display="none"; //ここで「hide」を書く必要はありません。「hide」を書かない場合は、ドキュメントにバブルアップし、ドキュメントで非表示イベントをトリガーします}
                }
                //キーボード押下イベント document.addEventListener("keyup",function(e){
                    var e=e||window.e;
                    リセット()
                    //上キー if(e.keyCode=="38"){
                        索引 - ;
                        if(インデックス<0){
                            インデックス=リスト.長さ-1
                        }
                    }
                    //下キーif(e.keyCode=="40"){
                        インデックス++;
                        if(インデックス>リストの長さ-1){
                            インデックス=0
                        }
                    }
                    //確認キーを入力if(e.keyCode=="13"){
                        cite.innerHTML=リスト[インデックス].innerHTML;    
                        ul.style.display="なし";    
                        戻る ;
                    }
                    リスト[インデックス].className="bg";
                    
                })
                // 選択されていないときにドキュメントをクリックすると非表示になります document.addEventListener("click",function(){
                    ul.style.display="なし";
                })
                //スタイルリセット関数 reset(){
                    for(var i=0;i<list.length;i++){
                        リスト[i].className="";
                    }
                }
        </スクリプト>
    </本文>

</html>

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • jsは検索機能付きのドロップダウンボックスでリアルタイム検索とリアルタイムマッチングを実装します
  • jQuery とネイティブ JS を使用して選択ドロップダウン ボックスの選択値を取得する例
  • JS でドロップダウン ボックスの動的な追加を実現 (エフェクト付き)
  • Vue.js 2.0 でのカスケード ドロップダウン ボックスの選択例
  • JavaScript は、州、市、地区の 3 段階のリンク ドロップダウン ボックス メニューを実現します。
  • Select2.js ドロップダウン ボックスの使用法の概要
  • Extjs の ComboBoxTree で実装されたドロップダウン ボックス ツリー効果 (自作)
  • JavaScript ドロップダウン ボックス オプション クリック イベントの共有例
  • 選択ドロップダウンボックスの入力機能を実現する js メソッド
  • 州、市、地区の 3 レベル リンク ドロップダウン ボックス メニューの JavaScript バージョン

<<:  MySQL シャーディング入門ガイド

>>:  IE8 ベータ 1 には注意が必要な 2 つの領域があります

推薦する

流れと動的なライン効果を実現する純粋なCSSコード

アイデア:外側のボックスは背景を設定し、内側のボックスは背景の幅と高さを設定し、ボックスを動かすアニ...

指定したディレクトリに nginx をインストールする方法の例

会社の要件により、異なる場所にある 2 つの nginx サーバーを同じマシンにインストールする必要...

UI を通じて Docker を管理する方法

Docker はますます多くのシナリオで使用されています。コマンドラインツールに慣れていない人にとっ...

Mysql で group_concat の長さ制限を変更する方法

MySQL には、「group_concat」という関数があります。通常の使用では問題がないかもしれ...

MySQL ストアド関数(カスタム関数)の定義と使用方法の詳細な説明

ストアド関数ストアド関数とは: SQL コードの一部をカプセル化し、特定の関数を完了して、結果を返し...

SQL インジェクションの詳細

1. SQL インジェクションとは何ですか? SQL インジェクションは、入力パラメータに SQL ...

secure_file_priv nullの問題を解決する

secure_file_priv = ' ';管理者としてcmdを実行します。 my...

MySQLでTEXT/BLOB型を使用する際の注意点を詳しく説明します

1. TEXTとBLOBの違いTEXT ファミリと BLOB ファミリの唯一の違いは、BLOB 型は...

jsを使用して簡単なスネークゲームを書く

この記事では、参考までに、jsで書かれたシンプルなスネークゲームの具体的なコードを紹介します。具体的...

MySQLデュアルマスター(マスターマスター)アーキテクチャ構成ソリューション

企業では、データベースの高可用性は常に最優先事項です。多くの中小企業は、MySQL マスター スレー...

MySQLオンラインデッドロック分析練習

序文MySQL を学習する際に、MySQL のロック メカニズムについて簡単に理解したことがあると思...

js の通常形式の日付と時刻に 0 を自動的に追加する 2 つのソリューション

目次背景解決策1アイデア:コード:解決策2アイデア:要約する参照する背景日付と時間をフォーマットする...

MySQLで最大接続数を達成する方法

目次データベース接続数が急増した理由は何ですか? 1. はじめに2. 知識ポイント3. 練習するIV...

MySQL バッチ追加および保存メソッドの例

ストレステストにログインする際には、多くの異なるユーザーが必要となり、データベースに新しいデータを追...

MySQLにインデックスを追加する方法

インデックスの簡単な紹介は次のとおりです。インデックスを追加する目的は、データベース クエリのパフォ...