###前提・実現したいこと
JQuery初心者レベルのものです。JQueryを使って検索システムのようなものを作りたいと思っているのですが、コードの設計が難しく、お力を貸していただきたいと思っております。
サンプル的なものになりますが、基本的には以下のような感じで、フォームに検索したいワード(例えばヤフー)を入れて検索ボタンを押すと、該当するものが、<a id="display"><a>に属性(リンク)付きで設定・表示され、クリックするとヤフーに飛ぶというような仕様にしたいです。(検索の対象となる候補はリスト形式で記述し、.hide()で隠していますが、他にベターなやり方がありましたら、ご教授願います。)
サンプルコードなどでも構いませんので、製作するヒントをいただければありがたいです。
よろしくお願いいたします。
###該当のソースコード
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>属性の取得/設定</title> <script src="https://code.jquery.com/jquery-2.2.4.js" integrity="sha256-iT6Q9iMJYuQiMWNd9lDyBUStIq/8PuOW33aOqmvFpqI=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script> <style> .target-area { display: none; } </style> </head> <body> <body> <div class="wrapper"> <div class="search-area"> <form> <input type="text" id="search-text" placeholder="検索ワードを入力"> </form> <div class="search-result"> <div class="search-result__hit-num"></div> <div id="search-result__list"></div> </div> </div> <ul class="target-area"> <li class="address"><a href="https://www.yahoo.co.jp/">ヤフー</a><li> <li class="address"><a href="https://www.google.co.jp/">グーグル</a><li> <li class="address"><a href="http://www.msn.com/">MSN</a><li> <li class="address"><a href="https://www.infoseek.co.jp/">インフォシーク</a><li> </ul> </div><!-- /.wrapper --> </body> <script> $(function () { searchWord = function(){ var searchResult, searchText = $(this).val(), // 検索ボックスに入力された値 targetText, targetTextArray = [], targetHref, targetHrefArray = [], hitNum; // 検索結果を格納するための配列を用意 searchResult = []; // 検索結果エリアの表示を空にする $('#search-result__list').empty(); $('.search-result__hit-num').empty(); // 検索ボックスに値が入ってる場合 if (searchText != '') { $('.target-area li a').each(function() { targetText = $(this).text(); targetTextArray.push(targetText); targetHref = $(this).attr('href'); targetHrefArray.push(targetHref); // 検索対象となるリストに入力された文字列が存在するかどうかを判断 if (targetText.indexOf(searchText) != -1) { // 存在する場合はそのリストのテキストを用意した配列に格納 searchResult.push(targetText); } }); // 検索結果をページに出力 for (var i = 0; i < searchResult.length; i++) { var univHref = targetHrefArray[targetTextArray.indexOf(searchResult[i])]; $('<a>').text(searchResult[i]).appendTo('#search-result__list').attr('href', univHref); } // ヒットの件数をページに出力 hitNum = searchResult.length + '件のポータルサイトが見つかりました。'; $('.search-result__hit-num').append(hitNum); } }; // searchWordの実行 $('#search-text').on('input', searchWord); }); </script> </body> </html>
###試したこと
いろいろと試行錯誤してみたのですが、ワードだけでなく、属性も合わせて検索・設定しなければならないため、
壁にぶち当たってしまいました…。
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/18 14:16
2017/05/18 14:32
2017/05/18 16:57
2017/05/18 17:26
2017/05/18 17:35 編集
2017/05/18 17:41
2017/05/19 13:50
2017/05/19 14:28
2017/05/19 14:31
2017/05/19 14:33 編集
2017/05/19 14:36
2017/05/21 10:17
2017/05/21 10:26
2017/05/21 10:29
2017/05/21 10:40
2017/05/21 10:53
2017/05/29 10:19
2017/05/29 11:26