Цитата:
Цитата:
|
Это нужно для поиска и выделения найденных слов. Я написал такой код:
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, время: 12:54. |