質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1877閲覧

検索した文字列の色を変えたい

mei666

総合スコア15

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

1クリップ

投稿2019/01/18 00:06

編集2019/01/18 00:23

ページ内で特定の文字列を検索して、テーブル内のレコード抽出しています。
(抽出はできています)
この後、抽出されたレコード内の特定の文字列(検索した文字列)の色を変える、という仕組みを作りたいのですが、うまくいきません。

CSSのハイライトをどのように記述すればいいのでしょうか。

以下のような仕組みです。

1.検索ボックスに文字を入力する
2.検索ボタンを押す
3.該当のレコードのみ表示する and 検索した文字列の色を変える

1.すべて表示ボタンをクリックする
2.文字列の色を元に戻す

jQuery

1$(function() { 2 $('#button1').on("click", function() { 3 var re = new RegExp($('#search').val().trim().replace(/ +/, "|")); 4 $('#result tbody tr').each(function() { 5 $(this).toggle($(this).find('td').filter(function() { 6 return $(this).text().match(re) ? true : false; 7 }).length > 0); 8 }); 9 }); 10 $('#button2').on("click", function() { 11 $('#result tbody tr').each(function() { 12 var tr = $(this); 13 var re = $('#search').val().trim().split(/ +/); 14 var flg = re.map(function(x) { 15 return tr.has($('td').filter(function() { 16 return $(this).text().match(new RegExp(x)); 17 })).get(); 18 }).filter(function(x) { 19 return x.length > 0; 20 }).length == re.length; 21 tr.toggle(flg); 22 }); 23 }); 24 $('#button3').on("click", function() { 25 $('#result tr').show(); 26 }); 27}); 28

CSS

1.highlight { 2 background-color: yellow 3}

html

1<head> 2<script type="text/javascript" src="jquery.js"></script> 3<script type="text/javascript" src="jquery-highlight-5s.js"></script> 4</head> 5<body> 6 7<p> <input type="text" id="search" value=" "> <input type="button" value="and検索" id="button2" id="btn-onoff"> <input type="button" value="すべて表示" id="button3"> </p> 8<table id="result"> 9 10 11 12</body>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/01/18 00:17

「うまくいかない」だけでは質問者さんがどこまでできているか、このコードはどこまで実現できていて何ができていないのか分からないので具体的に記載してください。
guest

回答1

0

ベストアンサー

tdの中にタグがないことを前提にしてよければこう

javascript

1<script> 2$(function(){ 3 $('#button1').on("click",function(){ 4 var re = new RegExp($('#search').val().trim().replace(/ +/g,"|")); 5 $('#result tbody tr').each(function(){ 6 $(this).toggle($(this).find('td').filter(function(){ 7 return $(this).text().match(re)?true:false; 8 }).length>0); 9 }); 10 }); 11 $('#button2').on("click",function(){ 12 $('#result tbody tr').each(function(){ 13 var tr=$(this); 14 var re=$('#search').val().trim().split(/ +/); 15 var flg=re.map(function(x){ 16 return tr.has($('td').filter(function(){ 17 return $(this).text().match(new RegExp(x)); 18 })).get(); 19 }).filter(function(x){ 20 return x.length>0; 21 }).length==re.length; 22 tr.toggle(flg); 23 }); 24 }); 25 $('#button3').on("click",function(){ 26 $('#result tr').show(); 27 }); 28 $('#check1').on("change",function(){ 29 $('#result td').each(function(){ 30 $(this).text($(this).text()); 31 }); 32 if($(this).prop('checked')){ 33 $('#result td').each(function(){ 34 var re = new RegExp("("+$('#search').val().trim().replace(/ +/g,"|")+")+",'g'); 35 $(this).html($(this).html().replace(re,'<span style="display:inline-block;background-color:yellow">$&</span>')); 36 }); 37 } 38 }); 39 $('#search').on('keyup',function(){ 40 $('#check1').trigger('change'); 41 }); 42}); 43</script> 44<input type="text" id="search" value=" a b "> 45<input type="button" value="or検索" id="button1"> 46<input type="button" value="and検索" id="button2"> 47<input type="button" value="すべて表示" id="button3"> 48<label><input type="checkbox" id="check1">ハイライト</label> 49 50<table id="result"> 51<tbody> 52<tr> 53<td>1</td> 54<td>aaa</td> 55<td>bbb</td> 56</tr> 57<tr> 58<td>2</td> 59<td>aaa</td> 60<td>---</td> 61</tr> 62<tr> 63<td>3</td> 64<td>bbb</td> 65<td>---</td> 66</tr> 67<tr> 68<td>4</td> 69<td>---</td> 70<td>abcba</td> 71</tr> 72<tr> 73<td>5</td> 74<td>---</td> 75<td>---</td> 76</tr> 77</tbody> 78</table>

投稿2019/01/18 00:42

編集2019/01/18 01:26
yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mei666

2019/01/18 01:07

ありがとうございます!反映できました。 この仕様で大丈夫だと思いますが、一応お伺いしたいのですが、 検索ボタン・すべて表示ボタンと同時にハイライトのON・OFFは難しいのでしょうか。
yambejp

2019/01/18 01:26 編集

ハイライトと検索機能は処理が競合したり条件が絞りにくかったりあるので ハイライトはチェックボックスにしてしまうとかのほうが現実的かも (ソースを修正しました)
mei666

2019/01/18 02:04

ありがとうございます! こちらの方法と取りたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問