2017-03-31 6 views
-2

多くのコンテンツを含むサイトを作成しようとしていますが、JavaScriptをまだ学んでいて、検索バーに入力され、ページ上で検索され、ハイライト表示されます。余分なボーナスポイントは、もしあなたがそれを検索しても、それも検索を入力します。 ; PJavaScriptで検索バーを作成してページ上のテキストを見つけてハイライト表示する方法

+0

ブラウザが提供する検索バーに問題がありますか? – BCartolo

+2

「余分なボーナスポイント」、本当ですか? – georg

+0

申し訳ありません、私は私の質問を少し面白く聞こえるようにしたいです – GoGode

答えて

1

イベントバーナーにイベントリスナーを設定して、変更があるたびに画面上のすべてのテキストを調べ、そのテキストを検索バーの値と比較します。一致するものがある場合、プログラムは '一致'を '<span class=highlight>match</span>'に置き換えます。基本的に一致するテキストを強調表示するCSSクラスのスパンを追加します。

コードを表示せずに例を挙げるのは難しいでしょうが、この無料コースhttps://javascript30.com/ビデオ#6に私が従った素晴らしいガイドがあります。私はどのような方法でコースに所属していませんが、それは私の多くを助けてきました。

+0

私はいくつかのコードを見つけましたが、jQueryの使い方を知らないので、ボタンまたはで関数を呼び出す方法を教えてください: – GoGode

+0

$( '#myText')。bind( 'keyup click 検索= $(this).val(); toLowerCase(); var re = new RegExp(検索、 'g'); $( '*')。それぞれ(function ){ $(this).css( 'background-color'、 'transparent'); target = $(this).text()。toLowerCase(); if(target.match(re)|| target.match( '^' + search)){ $(this).css( '背景色'、 '黄色'); } }); }); – GoGode

+0

私もJQueryを使用していません。これは通常のJavaScriptでのみ解決できます。私の答えを例で更新します – ttches

0

さて、私はテーブルで検索し、唯一のマッチング結果を表示するには、これを実行していますが、ページ全体で検索し、テキストをハイライト表示するために、それはこのようなものでなければなりません:

$('#your_input_id').bind('keyup change',function(){ 
    search = $(this).val().toLowerCase(); 
    var re = new RegExp(search, 'g'); 

    $('*').each(function(){ 
     $(this).css('background-color', 'transparent'); 
     target = $(this).text().toLowerCase(); 
     if(target.match(re) || target.match('^' + search)){ 
      $(this).css('background-color', 'yellow'); 
     } 
    }); 
}); 

PS :私は私の答え30を削除していた/


:私は、ページ全体でそれを試したことがないので、それは、jQueryのすべてのセレクター*と協力し、おそらくそれが原因でそのセレクタを使用するのでは時間がかかりすぎるだろうかどうかわかりません分前に、私はそれが動作しないと思うので(私はテストしていませんでしたが、コードを改善すると助けになるので削除しませんでした)

+0

ボタンで関数を呼び出すにはどうすればいいですか? – GoGode

+0

ボタン「検索」のようなボタンで呼び出しますか?またはボタンをクリックすると、入力フィールドが表示されますか? –

+0

検索ボタン – GoGode

関連する問題