Показать сообщение отдельно
  #22 (permalink)  
Старый 27.06.2009, 20:07
300
 
Сообщений: n/a

Это нужно для поиска и выделения найденных слов. Я написал такой код:

function reset()
{
 for (i=1; i<ta.length; i++)
  {
   ta[i].style.display = ''
  }
 afe = tbl.getElementsByTagName("font")
 if (afe.length != 0)
  {
   for (i=0; i<(afe.length); i++)
       if (afe[0].tmp == "yes") {afe[0].outerHTML = afe[0].innerHTML}
  }
}

 function find()
{
 reset()
 for (i=1; i<ta.length; i++)
  {
   txt = ta[i].innerText.toLowerCase()
   findstr = fnd.value.toLowerCase()
   if (txt.lastIndexOf(findstr) == -1) {ta[i].style.display = 'none'}
  }
 REstr = new RegExp(findstr,"gi")
 tbl.innerHTML = tbl.innerHTML.replace(REstr, '<font style="background-color:white; font-size:30" tmp="yes">' + findstr + '</font>')
}


Но почему-то не работает. Текст для поиска берётся из поля формы. Имя поля - fnd. tbl - это id таблицы. Смысл такой: если в данной строке есть это слово, то оно выделяется, т.е. происходит замена слова на слово с тегами. А если нет - строка скрывается.
Функция reset сбрасывает всё. При замене я вставил параметр tmp в тег font, чтобы по нему определять, какие теги font удалять при сбросе. Сброс сначала ищет все теги font в таблице, а потом удаляет те, у которые tmp=yes.

Но код почему-то не работает. Поправьте, кто знает.
Ответить с цитированием