検索データ表示を実装するJavaScript

検索データ表示を実装するJavaScript

この記事ではJavaScript検索のデータ表示コードを参考までに共有します。具体的な内容は以下のとおりです。

本日の結果は次のとおりです。

この場合、重要なポイントが2 つあります。

まず、 CSSを使用してスタイルを表示します

2つ目は、jsを使用して入力コンテンツと配列の内容を比較し、入力コンテンツを含むデータを表示することです。

まず、 CSS 表示スタイルの難しさを見てみましょう。

2 つの div の接触部分をシームレスにするには、 float:left;を設定する必要があります。

2つのdivボックスの左右の丸い境界線についてはborder-top-left-radiusなどの値を設定する必要があります。これにより、検索ボックスのスタイルを大まかに把握できます。残りの詳細はコードで確認できます〜

次に、 JS の比較部分を見てみましょう。

一般的な考え方としては、コンテンツを入力すると、一致するデータを表示するために下の検索ボックスが表示されます。入力しなかったり、入力したデータが一致しなかったりすると、データは表示されません。検索ボックスがフォーカスを失うと、下の検索ボックスは消えます。

1. 検索ボックスにコンテンツを入力すると、 onkeyup関数を呼び出して、まず下の検索ボックスの display 属性値を block に設定できます。
次に、 forEachを呼び出して配列内のすべてのデータを走査し、 valueを通じて入力コンテンツを取得し、 indexOfを呼び出してそのコンテンツと配列内のデータを比較します。一致する場合、戻り値は配列内のデータのインデックスになり、それ以外の場合は -1 になります。
一致するものがある場合は、 innerHTMLを使用して下の表示ボックスに p タグを追加できます。p の内容は一致するデータです。一致するものがない場合、「まだデー​​タがありません」という内容の p タグが返されます。

2. 検索ボックスがフォーカスを失った場合、下の検索ボックスの display 属性値を none に設定します。

コードは次のとおりです。

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

<ヘッド>
    <メタ文字セット="UTF-8">
    <meta http-equiv="X-UA-compatible" content="IE=edge">
    <meta name="viewport" content="width=デバイス幅、初期スケール=1.0">
    <title>ドキュメント</title>
    <スタイル>
        。容器 {
            幅: 500ピクセル;
            高さ: 160px;
            パディング: 40px;
            マージン: 100px 自動
        }

        #1つ {
            幅: 268ピクセル;
            高さ: 33px;
            フロート: 左;
            境界線: 0;
            左上の境界線の半径: 20px;
            左下の境界線の半径: 20px;
            背景色: rgb(245, 246, 247);
            アウトライン: なし;
        }

        #検索 {
            背景色: rgb(252, 85, 49);
            色: 白;
            幅: 70ピクセル;
            高さ: 35px;
            行の高さ: 35px;
            テキスト配置: 中央;
            フォントサイズ: 13px;
            境界線の半径: 20px;
            左上の境界線の半径: 0;
            境界線の左下の半径: 0;
            フロート: 左;
        }

        #見せる {
            幅: 270ピクセル;
            高さ: 170ピクセル;
            境界線: 1px実線 rgba(77, 76, 76, 0.459);
            表示: なし;
            上マージン: 40px;
            オーバーフロー: 非表示;
        }
        #divを表示{
            幅: 100%;
            高さ: 40px;
            行の高さ: 40px;
            テキストインデント: 1em;
            表示: ブロック;
        }
        #表示div:hover{
            背景色: rgb(240, 240, 245);
            カーソル:ポインタ;
        }
    </スタイル>
</head>

<本文>
    <div class="コンテナ">
        <div id="nav">
            <input type="text" id="one" placeholder="コースを入力してください" autocomplete="on">
            <div id="search">検索</div>
        </div>
        <div id="表示">
            <div></div>
        </div>
    </div>

    <スクリプト>
        let arr = ['ケーキは安い', 'フルーツが食べたい', '2333', 'CSS ブティック コース', '2 人の小さな友達', 'パンが 2 つあります', '一緒に行きましょう', 'バンドの夏', 'いい天気'];
        one = document.getElementById("one"); とします。
        show = document.getElementById("show") とします。

        one.onfocus = 関数(){
            show.style.display = "ブロック";
            one.style.border = "1px コーラルソリッド"
            one.onkeyup = 関数(){
                str = '' とします。
                用語をfalseにします。
                arr.forEach((アイテム) => {
                    index = item.indexOf(one.value); とします。
                    if (~インデックス) {
                        時間=true;
                        str+='<div>'+item+'</div>';// str の値は毎回更新されるため、重複を心配する必要はありません}
                })
                //非常に重要 if(one.value=='' || !tem){
                    show.innerHTML='<div>'+'まだ結果はありません'+'</div>';
                }
                それ以外{
                    表示:
                }
            }

        }
        //オブジェクトがフォーカスを失ったときにonblurイベントが発生します one.onblur = function () {
            show.style.display = "なし"
            one.style.border = "1px 透明実線"
            show.innerHTML='';
        }
    </スクリプト>
</本文>

</html>

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

以下もご興味があるかもしれません:
  • テーブルデータ検索を実装するjs
  • JavaScript による JSON データの並べ替えと検索
  • テーブルデータのさまざまな検索機能を実現するJSメソッド

<<:  両側にCSS固定レイアウト、中央に適応レイアウトを実装

>>:  docker コンペ応募でよく使われるコマンドのまとめ

推薦する

バックアップと削除のためにリアルタイムでステートメントを検出するMySQLトリガーの考え方の詳細な説明

問題の説明: ユーザーは、テーブルに「違反」という単語を含むフィールドが時々表示されることを要求して...

MySQL の結合クエリとサブクエリの問題

目次複数テーブル結合の基本構文クロス結合と直積現象クロスコネクトデカルト積現象内部結合外部結合左外部...

ウェブ開発におけるクロスドメインの理由に対する複数のソリューション

目次クロスドメインの理由JSONP Nginxソリューションバックエンドソリューションクロスドメイン...

Vue でルートをジャンプする方法をご存知ですか?

目次最初の方法: router-link (宣言型ルーティング) 2番目の方法: router.pu...

TomcatコンポーネントはWebサーバーのアーキテクチャの進化を示しています

1. tomcat とは誰ですか? 2. Tomcat は何ができますか? Tomcat は Web...

VMware インストール後に仮想ネットワーク カードが表示されない問題について

1 問題の説明: 1.1 Windows 10 に VMware を初めてインストールする場合、また...

docker view container log コマンドの実装

なぜログを読む必要があるのでしょうか?たとえば、コンテナの起動に失敗したがプロンプトが表示されない場...

小規模プロジェクトで Vue が点滅するのを防ぐ方法

まとめHTML: 要素と v-cloak CSS: [v-cloak]{表示: なし}プロセスページ...

HTML テーブルタグチュートリアル (27): セルの背景画像属性 BACKGROUND

セルの背景画像を設定でき、任意の GIF または JPEG 画像ファイルを使用できます。基本的な構文...

JavaScript を使用してソートアルゴリズムを実装する方法

目次バブルソート選択ソート挿入ソート要約するバブルソートバブルソートは、シーケンスの右側から始めて、...

Docker を使用してイメージをローカルにパッケージ化してデプロイする方法

初めてDockerを使用してイメージをローカルにパッケージ化してデプロイするまず、私のラップトップシ...

ウェブページの広告デザインにおけるウェブデザインの寸法とルール

1. 800*600 未満の場合、Web ページの幅が 778 以内であれば、水平スクロール バーは...

MySQL 結合テーブルクエリの基本操作 左結合のよくある落とし穴

概要中小規模のプロジェクトでは、特にレポートを作成するときに、結合テーブル クエリが非常に一般的な操...

意外と知らないJSのループ速度テストのいろいろを徹底解説

目次序文1. forループ2. whileループとdo-whileループ3. forEach、map...

Docker を使用した Redis マスタースレーブレプリケーションの実践の詳細説明

目次1. 背景2. 操作手順3. Dockerをインストールする4. 主なサービス構成5. サービス...