ホームページ  >  記事  >  ウェブフロントエンド  >  HTMLページに検索機能を作る方法

HTMLページに検索機能を作る方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-01-16 09:13:567164ブラウズ

今回はHTMLページに検索機能を作る方法を紹介します。 HTMLページに検索機能を作るにはどうすればよいでしょうか? HTML ページに検索機能を実装する際の注意事項は何ですか? ここでは実際の事例を紹介しますので、一緒に見てみましょう。

最近、多くの人が修正したフレームワークに取り組んでいて、毎日コードを見るとめまいを感じますが、フロントエンドを表示するように設定できるバックエンドを作成したので、かなり進歩したと感じています。 2 つのライブラリの異なるデータ範囲に非常に満足していたので、その日共有するために取り出しました。今日は、ここ数日間取り組んでいた機能について話します。それは検索機能です。 HTML ページの数。

この機能は主に、検索ボックスに文字を入力して実装され、前ボタンと次ボタンを押すと、クエリ領域内の一致する文字が特別なスタイルで自動的にマークされ、その後、ボタンを押し続けることができます。 「前へ」および「次へ」ボタン 一致する文字を順番に参照し、別のパターンを使用して、現在一致している文字を他の一致文字から区別します。

<div class="container" style="z-index: 999" id="searchDiv">
       <div class="keyword-search">
           查找:
           <input id="key" type="text" style="width: 200px;" placeholder="关键词" />
           <a href="javascript:void(0);" class="prev" onclick=&#39;wordSearch(1)&#39;><i class="c-icon"></i></a>
           <a href="javascript:void(0);" class="next" onclick=&#39;wordSearch()&#39;><i class="c-icon"></i></a>
       </div>
   </div>
<script>//搜索功能
      var oldKey0 = "";
      var index0 = -1;var oldCount0 = 0;
      var newflag = 0;
      var currentLength = 0;
      function wordSearch(flg) {
          var key = $("#key").val(); //取key值
          if (!key) {
              return; //key为空则退出
          }
          getArray();
          focusNext(flg);
      }
      function focusNext(flg) {
          if (newflag == 0) {//如果新搜索,index清零
              index0 = 0;
          }
          if (!flg) {
              if (oldCount0 != 0) {//如果还有搜索
                  if (index0 < oldCount0) {//左边如果没走完,走左边
                      focusMove(index0);
                      index0++;
                  } else if (index0 == oldCount0) {//都走完了
                      index0 = 0;
                      focusMove(index0);
                      index0++;
                  }
                  else {
                      index0 = 0;//没确定
                      focusMove(index0);
                      index0++;
                  }
              }
          } else {
              if (oldCount0 != 0) {//如果还有搜索
                  if (index0 <= oldCount0 && index0 > 0) {//左边如果没走完,走左边
                      index0--;
                      focusMove(index0);
                  } else if (index0 == 0) {//都走完了
                      index0 = oldCount0;
                      index0--
                      focusMove(index0);
                  }
              }
          }
      }
      function getArray() {
          newflag = 1;
          $(".contrast .result").removeClass("res");
          var key = $("#key").val(); //取key值
          if (!key) {
              oldKey0 = "";
              return; //key为空则退出
          }
          if (oldKey0 != key || $(".current").length != currentLength) {
              //重置
              index0 = 0;
              var index = 0;
              $(".contrast .result").each(function () {
                  $(this).replaceWith($(this).html());
              });
              pos0 = new Array();
              if ($(".contrast-wrap").hasClass("current")) {
                  currentLength = $(".current").length;
                  $(".current .contrast").each(function () {
                      $(this).html($(this).html().replace(new RegExp(key, "gm"), "<span id=&#39;result" + (index++) + "&#39; class=&#39;result&#39;>" + key + "</span>")); // 替换
                  });
              } else {
                  $(".contrast-wrap").addClass(&#39;current&#39;);
                  currentLength = $(".current").length;
                  $(".contrast").each(function () {
                      $(this).html($(this).html().replace(new RegExp(key, "gm"), "<span id=&#39;result" + (index++) + "&#39; class=&#39;result&#39;>" + key + "</span>")); // 替换
                  });
              }
              //$("#key").val(key);
              oldKey0 = key;
              //$(".contrast .result").each(function () {
              //    $(this).parents(&#39;.contrast-wrap&#39;).addClass(&#39;current&#39;);
              //    pos0.push($(this).offset().top);
              //});
              // pos0.push($(".contrast .result:eq(2)").offset().top - $(".contrast .result:eq(2)").parents(".contrast").offset().top);
              oldCount0 = $(".contrast .result").length;
              newflag = 0;
          }
      }
      function focusMove(index0) {
          $(".contrast .result:eq(" + index0 + ")").parents(&#39;.contrast-wrap&#39;).addClass(&#39;current&#39;);
          $(".contrast .result:eq(" + index0 + ")").addClass("res");
          var top = $(".contrast .result:eq(" + index0 + ")").offset().top + $(".contrast .result:eq(" + index0 + ")").parents(".contrast").scrollTop();
          var intop = top - $(".contrast .result:eq(" + index0 + ")").parents(".contrast").offset().top;
          $(".contrast .result:eq(" + index0 + ")").parents(".contrast").animate({ scrollTop: intop }, 200);
          if ($(".contrast .result:eq(" + index0 + ")").parents(".contrast").scrollTop() == 0) {
              $("html, body").animate({ scrollTop: top - 200 }, 200);
          } else {
              $("html, body").animate({ scrollTop: $(".contrast .result:eq(" + index0 + ")").parents(".contrast").offset().top - 200 }, 200);
          }
      }
      $(&#39;#key&#39;).change(function () {
          if ($(&#39;#key&#39;).val() == "") {
              index0 = 0;
              $(".contrast .result").each(function () {
                  $(this).replaceWith($(this).html());
              });
              oldKey0 = "";
          }
      });
  </script>

次に、実装原則を思い出してください:

最初に最後のクエリ結果をクリアし、次に 正規表現を使用して、キーの値に基づいて領域内のすべての一致する文字に特別なスタイルを追加します (A span など)。 result というクラス名を持つタグをメソッドに追加し、odKey0 変数を使用してキーの値を記録します (次回入力するときに最初に比較します。同じであれば、次の または を参照したいことを意味します)。入力時に正規表現を使用する必要はありません。式が一致しました)、oldCount0 はクエリの合計数を記録し、newflag は 0 に設定されます (最初のクエリではない場合、newflag は 1)。

次に、getNext メソッドを入力します。flg は、ユーザーが前または次のボタンを押したかどうかを示します。index0 を使用して、現在表示されている一致する文字を記録し、増加するか減少するか、または 0 に設定されるかを決定します。 oldCount0 より大きいか、0 より小さい場合は、再度開始されます)。

focusMove メソッドは、ページを現在の要素に配置する操作です。学習した

Jquery メソッド:

eq() セレクター: セレクターは、指定されたインデックス値を持つ要素を選択します。例: $(".contrast .result:eq(1)") は、クラス名コントラスト要素のうち、クラス名が result である 2 番目の要素を選択します。

parents() メソッド: 要素のすべての親要素。 $("p").parents('.contrast-wrap')、p 要素のcontrast-wrapという名前のすべての要素。

replace() メソッド: 選択した要素を指定された HTML コンテンツに置き換えます。選択した要素の要素も置き換えられることに注意してください。

offset() メソッド: ドキュメントに対する一致する要素のオフセット (位置) を返すか、設定します。

scrollTop() メソッド: 一致する要素のスクロール バーの垂直位置を返すか、設定します。

これらの事例を読んだ後は、その方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。

関連記事:

H5の写真のズレを解決する方法

H5でカレンダー認証機能を作る方法

H5でカメラを呼び出して写真を撮ったり圧縮したりする方法


以上がHTMLページに検索機能を作る方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。