• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScriptによるページ内検索での検索方向)

JavaScriptによるページ内検索での検索方向

このQ&Aのポイント
  • JavaScriptを使ったページ内検索で検索方向を変更する方法について教えてください
  • 自分のサイトにページ内検索を追加しましたが、検索方向が制限されています。上から下だけでなく下から上へも検索できるようにする方法を教えてください
  • JavaScriptに関して知識が乏しく、ページ内検索の検索方向をどのように変更すれば良いか分かりません。検索方向の記述箇所や具体的な変更方法について教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • my--
  • ベストアンサー率89% (91/102)
回答No.2

だめでしたか。 2方向の件は最初の質問内容をいい加減に読んだこちらのミスです。 申し訳ありません。 承知の上で使ってると思いますけど、要素名や属性まで検索の対象になるのは使い勝手が悪そう。 ブラウザが備える機能を補うものでないと意味はないかなと個人的には思います。 一応検証に使ったソースコードを置いておきますが、これもいい加減です。あくまで参考程度にして下さい。 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>サンプル</title> <script type="text/javascript"> var serchindex = -1;//ココ var serchcounter = 0; var serchstr = ""; var serchwordcounter = 0; var start = 0; var dir = ""; function wordserch() { var radio = document.parts.radio1; for (var n = 0; n < radio.length; n++) { if (document.parts.radio1[n].checked) { if (dir != document.parts.radio1[n].value) { dir = document.parts.radio1[n].value; serchindex = (dir == "down") ? 0 : -1; } break; } } var s = document.parts.text1.value; if (s != serchstr) { serchindex = (dir == "down") ? 0 : -1;//ココ serchstr = s; serchwordcounter = 0; } var bCrumb = new Array(); var i; while (serchstr.indexOf(' ') >= 0) { serchstr = serchstr.replace(" ", " "); } while (serchstr.indexOf('|') >= 0) { serchstr = serchstr.replace("|", " "); } while (serchstr.indexOf('&') >= 0) { serchstr = serchstr.replace("&", " "); } bCrumb = serchstr.split(" "); for (i = serchwordcounter; i < bCrumb.length; i++) { serchstring = bCrumb[i]; serchcounter++; ref = serch(serchstring); if (!ref) { alert('検索単語が見つかりません'); } if (ref == true && start >= 0) { break; } else if (ref == true && start < 0) { serchwordcounter++; serchindex = (dir == "down") ? 0 : -1;//ココ break; } else { serchwordcounter++; serchindex = (dir == "down") ? 0 : -1;//ココ } } } function serch(txt, index) { var before, after, objstr; kazu = 0; serchstr = txt; objct = document.getElementById('UR'); str = objct.innerHTML; if (serchindex < 0) serchindex = str.length;//ココ if (dir == "down") { start = str.indexOf(serchstr,serchindex);//ココ } else { start = str.lastIndexOf(serchstr, serchindex); } if (start > 0) { before = str.substring(0, start); txt = "<B><A NAME='serchstr" + serchcounter + "'>" + serchstr + "</A></B>"; after = str.substring(start + serchstr.length); objstr = before + txt + after; objct.innerHTML = objstr; location.hash = "#serchstr" + serchcounter; serchindex = (dir == "down") ? start + txt.length : start;//ココ return true; } else { return false; } } </script> </head> <body> <form name="parts" action="#"> <div><input type="text" name="text1"> <input type="button" onclick="wordserch()" value="検索"> <input type="radio" name="radio1" value="down" checked>down <input type="radio" name="radio1" value="up">up </div> </form> <div id="UR">~</div> </body> </html>

seven9317
質問者

お礼

再度のご回答とご確認ありがとうございます。 貼って頂いたソースできちんと動作しました! 要素名や属性の件ですが、 自サイトがアイテムデータサイトとなっておりまして、 検索対象が全て日本語(ひらがな・カタカナ・漢字、稀に数字)ですので そこらへんは大丈夫かなと思います。 ご教授頂き本当にありがとうございました。

その他の回答 (1)

  • my--
  • ベストアンサー率89% (91/102)
回答No.1

str = objct.innerHTML; if (serchindex < 0) serchindex = str.length;//ココ start = str.lastIndexOf(serchstr, serchindex);//ココ if (start > 0) { まずココを。それから先頭行の var serchindex = -1;//ココ あといくつか serchindex = 0 がありますけど そこもすべて-1を代入します。最後に serchindex = start;//ココ 最終行近くにあるココを書き換えてみて下さい。 一応動きましたけど、動作確認は十二分に。

seven9317
質問者

お礼

ご回答ありがとうございます! さっそく試してみましたが、上手く動作しませんでした・・・ どこか解釈を間違えてしまっているのでしょうか; str = objct.innerHTML; if (serchindex < 0) serchindex = str.length;//←この一文を付けたし start = str.lastIndexOf(serchstr, serchindex);//←lastを付けたし if (start > 0) { 全ての「serchindex = 0」の0を-1に変える。 最後付近「serchindex=start+txt.length;」を→「serchindex = start;」に変える。 で合ってますでしょうか? お手数ですが確認して頂けますと幸いです; 自分の方でも、ご回答を参考に引き続き頑張ってみます。 それと質問内容の補足ですが、 イメージしているのは、質問内容に貼ったサイト様のフレーム版+ http://usagi-js.com/sample/jssample9_2.htm こちらのサイト様のように上からと下からの2方向で切り替えて検索が出来る機能です。 説明不足で申し訳ありません;

関連するQ&A