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

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

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

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

HTML

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

Q&A

解決済

2回答

1051閲覧

キーワード検索したい

mei666

総合スコア15

jQuery

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

HTML

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

0グッド

0クリップ

投稿2019/01/22 04:27

編集2019/01/23 01:54

前回に引き続き、キーワード検索について修正しています。
Tableタグ内でキーワード検索はできたのですが、HTMLのレイアウトを変更して、掲載したhtmlの中でキーワード検索が可能かどうか教えていただけますでしょうか。

jQueryは、htmlをTableで作成した時のものとなります。

html

1<!DOCTYPE html> 2<html lang="ja"> 3<head> 4 <title>Q and A</title> 5 <meta http-equiv="X-UA-Compatible" content="IE=Edge"> 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 7 <meta http-equiv="Content-Style-Type" content="text/css"> 8 <link rel="stylesheet" type="text/css" href="style.css"> 9 <link rel="stylesheet" type="text/css" href="css/css_qa.css"> 10 <script type="text/javascript" src="http://code.jquery.com/jquery-2.2.3.min.js"></script> 11 <script src="js/jjquery.quicksearch1.js" type="text/javascript"> 12 </script> 13 14 </head> 15 <body> 16 <div id="contents"> 17 <div id="main"> 18 19 <p> <input type="text" id="search" value=" "> <input type="button" value="and検索" id="button2" id="btn-onoff"> <input type="button" value="すべて表示" id="button3"> 20 <label><input type="checkbox" id="check1">ハイライト</label> 21 22 23<div class="cp_qa"> 24<div class="cp_actab"> 25 26<input id="cp_tabfour011" type="checkbox" name="tabs"> 27<label for="cp_tabfour011">Q:ああああaa</label> 28 <div class="cp_actab-content"> 29 <p>A:いいいいいい</p> 30 </div> 31</div> 32<div class="cp_actab"> 33<input id="cp_tabfour012" type="checkbox" name="tabs"> 34<label for="cp_tabfour012">Q:ああbb</label> 35 <div class="cp_actab-content"> 36 <p>A:ううううう</p> 37 </div> 38</div> 39<div class="cp_actab"> 40<input id="cp_tabfour013" type="checkbox" name="tabs"> 41<label for="cp_tabfour013">Q:いいいいcc</label> 42 <div class="cp_actab-content"> 43 <p>A:ええええええ</p> 44 </div> 45 46</div> 47</div> 48</body>

jQuery

1$(function() { 2 $('#button1').on("click", function() { 3 var re = new RegExp($('#search').val().trim().replace(/ +/, "|")); 4 $('div.cp_actab').each(function() { 5 $(this).toggle($(this).find('p,label').filter(function() { 6 return $(this).text().match(re) ? true : false; 7 }).length > 0); 8 }); 9 }); 10 $('#button2').on("click", function() { 11 $('div.cp_actab').each(function() { 12 var tr = $(this); 13 var re = $('#search').val().trim().split(/ +/); 14 var flg = re.map(function(x) { 15 return div.has($('div').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 div.toggle(flg); 22 }); 23 }); 24 $('#button3').on("click", function() { 25 $('$('div.cp_actab').show(); 26 }); 27});

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

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

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

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

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

yambejp

2019/01/23 01:08

検索対象のQかAのどちらかにキーワードがあればその組み合わせで 表示・非表示を切り替えるのでしょうか? ボタンや#searchのhtml表記も省略しているし あまり雑に質問されると質問の意図がつたわってきません。 最低でも続きなら続きで前回の質問のリンクを貼ってください
mei666

2019/01/23 01:57

申し訳ありません。 前回のものにリンク貼るというのも気が付きませんでした。 htmlの方は追記で載せました。 すみません、こういうサイトの利用も、jqueryも初心者のためルールがわかっていませんでした。気を付けます。
guest

回答2

0

ベストアンサー

前とちょっとロジックがかわったかもしれませんがこう

javascript

1<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script> 3$(function() { 4 $('#button1').on("click", function() { 5 var re = new RegExp($('#search').val().trim().replace(/ +/g, "|")); 6 $('div.cp_actab').each(function() { 7 $(this).toggle($(this).find('p,label').filter(function() { 8 return $(this).text().match(re) ? true : false; 9 }).length > 0); 10 }); 11 }); 12 $('#button2').on("click", function() { 13 $('div.cp_actab').each(function() { 14 var div = $(this); 15 var re = $('#search').val().trim().split(/ +/); 16 var flg=re.filter(function(x){ 17 return div.text().match(new RegExp(x))?true:false; 18 }).length==re.length; 19 div.toggle(flg); 20 }); 21 }); 22 $('#button3').on("click", function() { 23 $('div.cp_actab').show(); 24 }); 25 $('#check1').on("change", function() { 26 var re = new RegExp("("+$('#search').val().trim().replace(/ +/g, "|")+")+","g"); 27 var ch=$(this); 28 $('.cp_actab label,.cp_actab-content p').each(function(){ 29 var txt=$(this).text(); 30 if(ch.prop('checked')){ 31 txt=txt.replace(re,'<span style="display:inline-block;background-Color:yellow">$&</span>') 32 } 33 $(this).html(txt); 34 }); 35 }).trigger('change'); 36 $('#search').on('change',function(){ 37 $('#check1').trigger('change'); 38 }); 39}); 40</script> 41 42<div id="contents"> 43<div id="main"> 44<p> 45<input type="text" id="search" value="あ う"> 46<input type="button" value="or検索" id="button1"> 47<input type="button" value="and検索" id="button2"> 48<input type="button" value="すべて表示" id="button3"> 49<label><input type="checkbox" id="check1">ハイライト</label> 50<div class="cp_qa"> 51<div class="cp_actab"> 52<input id="cp_tabfour011" type="checkbox" name="tabs"> 53<label for="cp_tabfour011">Q:ああああaa</label> 54<div class="cp_actab-content"> 55<p>A:いいいいいい</p> 56</div> 57</div> 58<div class="cp_actab"> 59<input id="cp_tabfour012" type="checkbox" name="tabs"> 60<label for="cp_tabfour012">Q:ああbb</label> 61<div class="cp_actab-content"> 62<p>A:ううううう</p> 63</div> 64</div> 65<div class="cp_actab"> 66<input id="cp_tabfour013" type="checkbox" name="tabs"> 67<label for="cp_tabfour013">Q:いいいいcc</label> 68<div class="cp_actab-content"> 69<p>A:ええええええ</p> 70</div> 71</div> 72</div> 73

投稿2019/01/23 03:01

yambejp

総合スコア114843

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

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

mei666

2019/01/23 04:14

ありがとうございます!思った通りに動きます。
guest

0

やりたいことがわかりにくいので自信がないですが、
$('#result tbody tr')$('div.cp_actab')に変更
$(this).find('td')$(this).find('p,label')に変更
でいけませんか?

投稿2019/01/22 04:54

moredeep

総合スコア1507

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

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

mei666

2019/01/22 05:14

回答ありがとうございます。 修正してみましたが、動きません・・。 Tableタグ内をキーワード検索して抽出できるように作成してあるのですが、デザイン・レイアウトを重視しページを編集したところキーワード検索ができなくなってしまいました。 検索した結果QとAの2行を抽出したい、と思っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問