Web サイトを閲覧すると、検索したいコンテンツを入力すると、以下にいくつかのプロンプトが表示されます。これを実現する方法を以下に説明します。それ! この機能を書くとき、私は細部に非常にこだわります。注意しないと、ページにさまざまな違和感が現れます。
文字を入力するとき、まず効果を見てみましょう。入力ボックスに入力すると、対応するメッセージが後で表示されます。クリックするだけで、対応するドキュメント領域にリンクします。これは、サイトの検索とナビゲーションに非常に適しています。
完全なテスト コードを以下に示します。
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <form id="form" name="form"> 搜索:<input type="text" name="input1"> </form> <p id="wrap" style="width: 100;height: 100px;border: 1px solid black;"></p> <script type="text/javascript"> var form = document.getElementById("form"); var input1 = document.forms["form"]["input1"]; var wrap = document.getElementById("wrap"); var arr1 = [" 我爱中国"," 我爱美国"," 我爱英国"," 我天生神力"];//数组里面的元素就是我希望在输入宽输入某个字符后在下方出现的搜索字符。 var arr2 = [];//这个数组是为了装入经过筛选和匹配符合要求的arr1中的元素。例如输入值为"我",arr1中的4个元素都出现。输入"我爱",则出现前三个。出现的元素都要装入到arr2中方便后面依据数组中的元素创建元素。 input1.oninput = function() {//添加input监控,这样我们可以随时感知输入框值的变化 var val = input1.value;//获取当前输入框的值。 arr2 = [];//使得每次输入框值变化后数组arr2为空。不然每改变一次值就创建一次元素而不删除的话,wrap中添加的元素会越来越多。 /*清掉wrap里面的所有p元素。这里要注意一个问题,很重要。我们在获取wrap内的p元素的时候要注意以下几个问题: 1.getElementsByTagName("p");返回的是一个数组而不是一个元素,不能直接通过remove()删除; 2.使用querySelectorAll("p")获取p元素,使用for循环删除所有p元素不能按照以下方式写: for (var k = 0; k < p1.length; k++) { p1[k].remove(); }; 因为将数组内的元素从下标为0的元素开始删除,每删除一个,删除前下标为1的元素就会自动下标为0的位置。这样通过上面的循环并不能将wrap中的元素删除干净。 你可以这样写: for (var k = p1.length-1; k >= 0; k--) { p1[k].remove(); }; 或者不要通过getElementsByTagName("p")这种方式获取元素,而是通过querySelectorAll("p")就不会出现上面的问题。 */ var p1 = wrap.getElementsByTagName("p"); // var p1 = wrap.querySelectorAll("p"); for (var k = p1.length-1; k >= 0; k--) { p1[k].remove(); }; //indexOf用来查看arr1中的每个元素是否包含输入款的字符。包含则返回第一个下标,不包含则返回-1.这里要注意输入框中的值为空时返回的0,输入第一个字符为"我"也返回0,这时如果用(arr1[i].indexOf(val) > -1为条件,输入框为空时也会在wrap内生成p元素。所以我在arr1数组元素字符串第一个位置加一个空格,这样输入第一个字符为"我"返回1,再将条件变为arr1[i].indexOf(val) > 0 for (var i = 0; i < arr1.length; i++) { if (arr1[i].indexOf(val) > 0 ) { // console.log(val); arr2.push(arr1[i]); } //创建元素的循环。在每个创建的元素内添加arr2数组中的字符串。 for (var j = 0; j < arr2.length; j++) { var p = document.createElement("p"); var a = document.createElement("a"); a.innerText = arr2[j]; a.setAttribute("href","http://www.baidu.com"); p.appendChild(a); wrap.appendChild(p); } } </script> </body> </html>
私のコーディングのアイデア:
1. フォーム入力ボックス。 2. フォーム入力ボックスの値の変化を必ず監視してください。 oninput
3 にイベントを追加すると、検索値がどのように表示され、入力値
の演習
も一緒に行うことができます。
- 作成したp要素に条件を満たす値を入れて、このp要素をwrapに入れます。
- 4. このとき、入力ボックスの値を絶えず変更すると、ラップ内の p 要素が増え続け、それらが連続的に繰り返されるという最初の大きな問題が発生する可能性があります。 どうしよう
。
このようにして、重複した要素が配列 arr2 に追加されなくなります。
5. 次に、要素が依然として繰り返し表示される理由がわかります。これは要素の残留問題です。つまり、前の要素が削除されません。変更を行うたびに、ラップ内に作成された要素を削除する必要があります。削除しないと、要素はまだ存在します。これは、 getElementsByTagName() を使用して要素を取得し、削除します。
6. 一般的な機能は完了し、その後、いくつかの細かい作業が行われますが、これらの細かい作業が時間を無駄にします。
1 つは、入力ボックスの値が空の場合にも検索値が表示されることです。 arr1[i].indexOf(val) は 0 または -1 より大きいですか? null 値の戻り値も 0 であることがわかり、要素を作成するコードも実行されるため、それぞれの前にスペースを追加しました。 arr1 の文字列。
もう 1 つは、getElementsByTagName() を使用して要素を取得するときに注意すべき重要な点です。私はこの問題に長い間悩まされてきました。上記のコード領域について詳しく説明します。
JavaScript検索自動プロンプト機能の実装
以上がjs は Web 検索ボックスにキーワード プロンプトを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

Pythonはデータサイエンスや機械学習により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、簡潔な構文とリッチライブラリエコシステムで知られており、データ分析とWeb開発に適しています。 2。JavaScriptは、フロントエンド開発の中核です。 node.jsはサーバー側のプログラミングをサポートしており、フルスタック開発に適しています。

JavaScriptは、最新のブラウザにすでに組み込まれているため、インストールを必要としません。開始するには、テキストエディターとブラウザのみが必要です。 1)ブラウザ環境では、タグを介してHTMLファイルを埋め込んで実行します。 2)node.js環境では、node.jsをダウンロードしてインストールした後、コマンドラインを介してJavaScriptファイルを実行します。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1
使いやすく無料のコードエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
