Цитата:
Цитата:
|
Это нужно для поиска и выделения найденных слов. Я написал такой код:
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. Но код почему-то не работает. Поправьте, кто знает. |
1) нету innerText, outerHTML в ff
2) не используй глобальные переменные 3) если создаешь regexp с помощью конструктора - добавляй ограничители (/) 4) при подстановке пользовательских данных в regexp их нужно экранировать 5) я бы не рискнул к таблице innerHTML применять. Лучше к ячейкам. Возможно лучше будет даже пройтись по всем текстовым нодам (смотри скорее с конца). Еще можешь почитать http://webew.ru/articles/598.webew |
1) нету innerText, outerHTML в ff
2) не используй глобальные переменные 3) если создаешь regexp с помощью конструктора - добавляй ограничители (/) 4) при подстановке пользовательских данных в regexp их нужно экранировать 5) я бы не рискнул к таблице innerHTML применять. Лучше к ячейкам. Возможно лучше будет даже пройтись по всем текстовым нодам (смотри скорее с конца). Еще можешь почитать http://webew.ru/articles/598.webew 1) Я работаю в IE. А что же аналогичное для пользователей ff? 3) Так, что ли: REstr = new RegExp(/findstr/,"gi")? Так не работает. 5) Спасибо, это сработало! |
Цитата:
На счет "добавляй ограничители (/)" я тоже не понял. |
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Други, помогите, пожалуйста, ибо я совсем не спец в JS.
На основе найденного здесь примера решил сделать скрипт, уменьшающий надписи на странице. Подгружаю как внешний скрипт, однако не работает. Что неверно в коде? window.onload=function(){ document.body.innerHTML = document.body.innerHTML.replace(' 000 руб', '<small> 000 руб</small>'); }Чую, что скорее всего дело в пробелах, однако выразить не могу (С) :) |
Подскажите пожалуйста, как это скрипт заставить работать без учета регистра?
Цитата:
и еще, как по-грамотному переделать этот код для замены целого ряда слов, где каждое отдельное слово заменяется определенным значением? |
Цитата:
тогда скрипт для замены целого ряда слов будет примерно так выглядеть <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1251" /> <title></title> <script language="JavaScript" type="text/javascript"> function repl(a) { var b = { "111": "\u0437\u0430\u043c\u0435\u043d\u0430", "222": "\u043f\u0440\u043e\u0448\u043b\u0430", "333": "\u0443\u0441\u043f\u0435\u0448\u043d\u043e", "4": "!" }; for (var c in b) { var d = RegExp(c, "gim"); a = a.replace(d, b[c]) } return a }; window.onload = function () { all_elements = document.getElementsByTagName("*"); i = 0; for (s = all_elements.length; i < s; i++) if (all_elements[i].tagName != "SCRIPT") { j = 0; for (s_ = all_elements[i].childNodes.length; j < s_; j++) if (all_elements[i].childNodes[j].nodeType == 3) all_elements[i].childNodes[j].data = repl(all_elements[i].childNodes[j].data) } }; </script> </head> <body> <font color="#FF0000">111 222 333 444</font> </body> </html> |
Часовой пояс GMT +3, время: 18:12. |