Как сделать навигацию по найденному слову внутри страницы?

Добрый день.
Поможете решить задачу или подсказать направление, как сделать. В сайте по странице настроен поиск внутри блока с классом "content". В строку поиска пишем текст "Привет", и если на странице есть слово "Привет", оно помещается в привет. Таких элементов на странице может быть много. Хочу сделать кнопки следующий, предыдущий результат. Которые будут переходить между результатами по странице. Да вот только понять не могу, как это сделать. Можете помочь в решении задачи?
  • Вопрос задан
  • 72 просмотра
Решения вопроса 1
VortexAll
@VortexAll Автор вопроса
В общем пришел к такому решению. Встраиваем форму на странице:
<form  action="javascript:void();" onsubmit="if(this.t1.value!='')parent.findString(this.t1.value);return(false);">
    <input  type="text" id="t1" name="t1" placeholder="Введите текст для поиска на странице" size="20">
    <input  type="submit" name="b1" value="Найти" _mstvalue="1183130">
</form>
<p class="results"></p>

Код JavaScript который будет работать только на браузерах, поддерживающих window.find, на Opera не работает, выведется сообщение, что в браузере не поддерживается.
var TRange=null;

function findString (str) {
 if (parseInt(navigator.appVersion)<4) return;
 var strFound;
 if (window.find) {
  strFound=self.find(str);
  if (!strFound) {
   strFound=self.find(str,0,1);
   while (self.find(str,0,1)) continue;
  }
 }
 else if (navigator.appName.indexOf("Microsoft")!=-1) {

  if (TRange!=null) {
   TRange.collapse(false);
   strFound=TRange.findText(str);
   if (strFound) TRange.select();
  }
  if (TRange==null || strFound==0) {
   TRange=self.document.body.createTextRange();
   strFound=TRange.findText(str);
   if (strFound) TRange.select();
  }
 }
 else if (navigator.appName=="Opera") {
    $("p.results").fadeIn().append('К сожалению браузер Opera не сможет запустить скрипт поиска...')
  return;
 }
 if (!strFound) $("p.results").fadeIn().append("Текст '"+str+"' не найден на странице!")
 return false;
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы