Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 28.04.2011, 19:07
Аспирант
Отправить личное сообщение для ale19 Посмотреть профиль Найти все сообщения от ale19
 
Регистрация: 10.04.2011
Сообщений: 69

Есть архив материалов на сайте.В виде материалов всеназвания имеют вид
<a href="ссылка на страницу материала" class="newslink">Название материала</a>

На странице материала его название имеет вид
<div id="ldF999" >Название материала</div>

и припомощи скрипта в первом посте вывожу похожие материалы

Допустим название такое
<div id="ldF999" >Это название этого материала</div>
этим получаю массив из слов названия
bquery = $("#ldF999").text().match(/([а-яёa-z]){4,}/gi);
отбросив ненужное,т.е. цифры,знаки препинания и слова менее чем из четырех букв
Присваиваю
query = bquery[0] и ищу похожие слова в архиве с помощью поиска
$.post('/load/', {query: query, a: 2},
...
Но так ищет только по первому слову из массива bquery
Когда query меняю в срипте на другое значение ,к примеру bquery[2] ищет нормально,но вот не получается сделать так чтоб при отсутствии схожих материалов по названию в архиве,атоматически при norez==undefined присвоить query значение следующего слова из массива и повторить поиск схожих материалов

Результаты поиска выводятся в
<div style=" display: none;overflow: hidden;" id="ressearch"></div>

Последний раз редактировалось ale19, 28.04.2011 в 19:12.
Ответить с цитированием
  #12 (permalink)  
Старый 28.04.2011, 20:44
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

надо было расписать так ( я про первые строчки,до $.post )

тогда и понять было бы легче


и почему-то у меня неуверенность насчет переменной func и самой рекурсии

// это массив [ название, этого, материала ]
var bquery = "Это название этого материала".match(/([а-яёa-z]){4,}/gi)


// номер слова в массиве
var n = 0;



// ищем "название"

$.post('/load/', {query: bquery[n], a: 2}, function(data){

                
       // ссылка на обработчик результата. т.е. на эту анонимную функцию
       var func = arguments.callee;
      
       if( !norez ){

      /*  что приходит при верном или неверном слове из архива?
           у меня будет слово Error */

                 if( data == 'Error' ) {
  
                              // проверка на наличие такого индекса в массиве
                              if( n < bquery.length ){
 
                         /*  через половину секунды отсылаем POST-запрос серверу со следующим словом
                                                      ++n <- это 1. тоесть слово ---> "этого"
                         важно отметить,что обработчик будет ТАКОЙ ЖЕ, т.е. опять вызовет POST-запрос, но уже с увеличенным "n" ( 3 , слово -> "материала")     */

                         setTimeout( function(){   $.post('/load/', {query: bquery[++n], a: 2}, func);  }, 500 );

                             // мы прошли все элементы массива, поиск неудачен
                              } else {   
                                          
                                      alert( 'НЕ НАЙДЕНО' );
   
                              }

                }

      }

});
Ответить с цитированием
  #13 (permalink)  
Старый 28.04.2011, 20:50
Аспирант
Отправить личное сообщение для ale19 Посмотреть профиль Найти все сообщения от ale19
 
Регистрация: 10.04.2011
Сообщений: 69

melky,
Получается - ничего не выйдет?
Ответить с цитированием
  #14 (permalink)  
Старый 28.04.2011, 20:56
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Ты попробовал ? по логике должно работать
Ответить с цитированием
  #15 (permalink)  
Старый 28.04.2011, 21:00
Аспирант
Отправить личное сообщение для ale19 Посмотреть профиль Найти все сообщения от ale19
 
Регистрация: 10.04.2011
Сообщений: 69

пробовал работает отлично,только с одним из любых заданных query=bquery[]
Ответить с цитированием
  #16 (permalink)  
Старый 28.04.2011, 21:23
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Строчку проверки, верный или неверный результат пришел, изменил?

Data=="errOr"


нет, верно?

Последний раз редактировалось melky, 28.04.2011 в 21:38.
Ответить с цитированием
  #17 (permalink)  
Старый 28.04.2011, 21:38
Аспирант
Отправить личное сообщение для ale19 Посмотреть профиль Найти все сообщения от ale19
 
Регистрация: 10.04.2011
Сообщений: 69

заменить norez==undefined на Data=="errOr" ?

так не получается

Последний раз редактировалось ale19, 28.04.2011 в 22:17.
Ответить с цитированием
  #18 (permalink)  
Старый 28.04.2011, 22:32
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

facepalm

как происходит проверка, нашли ли мы или нет?

Цитата:
query = bquery[0] и ищу похожие слова в архиве с помощью поиска
$.post('/load/', {query: query, a: 2},
т.е. ответ из "архива"
Ответить с цитированием
  #19 (permalink)  
Старый 28.04.2011, 22:49
Аспирант
Отправить личное сообщение для ale19 Посмотреть профиль Найти все сообщения от ale19
 
Регистрация: 10.04.2011
Сообщений: 69

ну как...сдесь же
if (norez==undefined)...
Ответить с цитированием
  #20 (permalink)  
Старый 28.04.2011, 23:07
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

что отвечает архив? по нем надо сверяться, верен ли результут?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в тексте javascript jQuery 3 31.05.2011 11:40
PagingToolbar и поиск DenQ ExtJS 5 02.11.2010 00:16
Поиск текста в блоке со скроллингом lukingnu Элементы интерфейса 0 05.08.2010 22:54
Поиск слова в исходном коде html страницы klsorat2010 Ваши сайты и скрипты 1 20.05.2010 23:46
Поиск в массиве через JavaScript Noran Общие вопросы Javascript 0 10.08.2008 17:31