Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 27.06.2009, 18:20
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
Подскажите, а как заменить строку <font tmp color=red> во всём тексте?
зачем? Откуда берется текст, который нужно заменить?

Цитата:
Нужно взять из него значение и искать его на всей странице, а потом заменить на другое
опять же зачем это нужно?
Ответить с цитированием
  #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.

Но код почему-то не работает. Поправьте, кто знает.
Ответить с цитированием
  #23 (permalink)  
Старый 27.06.2009, 21:20
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

1) нету innerText, outerHTML в ff
2) не используй глобальные переменные
3) если создаешь regexp с помощью конструктора - добавляй ограничители (/)
4) при подстановке пользовательских данных в regexp их нужно экранировать
5) я бы не рискнул к таблице innerHTML применять. Лучше к ячейкам. Возможно лучше будет даже пройтись по всем текстовым нодам (смотри скорее с конца). Еще можешь почитать http://webew.ru/articles/598.webew
Ответить с цитированием
  #24 (permalink)  
Старый 28.06.2009, 16:10
300
 
Сообщений: n/a

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) Спасибо, это сработало!
Ответить с цитированием
  #25 (permalink)  
Старый 28.06.2009, 16:24
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от 300
Я работаю в IE. А что же аналогичное для пользователей ff?
innerHTML

На счет "добавляй ограничители (/)" я тоже не понял.
Ответить с цитированием
  #26 (permalink)  
Старый 29.06.2009, 12:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от 300
Я работаю в IE.
А скрипт только для себя пишете? Если нужен только текст, обычно берут innerHTML и удаляют из него теги.

Сообщение от Riim
На счет "добавляй ограничители (/)" я тоже не понял.
С PHP попутал наверно.
Ответить с цитированием
  #27 (permalink)  
Старый 30.06.2009, 13:48
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Цитата:
А что же аналогичное для пользователей ff?
replaceChild (по поводу outerHTML)

Цитата:
С PHP попутал наверно
именно
Ответить с цитированием
  #28 (permalink)  
Старый 01.03.2010, 00:47
Новичок на форуме
Отправить личное сообщение для Moor Посмотреть профиль Найти все сообщения от Moor
 
Регистрация: 09.07.2009
Сообщений: 7

Други, помогите, пожалуйста, ибо я совсем не спец в JS.
На основе найденного здесь примера решил сделать скрипт, уменьшающий надписи на странице. Подгружаю как внешний скрипт, однако не работает. Что неверно в коде?
window.onload=function(){
document.body.innerHTML = document.body.innerHTML.replace(' 000 руб', '<small> 000 руб</small>');
}
Чую, что скорее всего дело в пробелах, однако выразить не могу (С)
Ответить с цитированием
  #29 (permalink)  
Старый 26.07.2010, 00:14
Интересующийся
Отправить личное сообщение для bioz00 Посмотреть профиль Найти все сообщения от bioz00
 
Регистрация: 26.07.2010
Сообщений: 14

Подскажите пожалуйста, как это скрипт заставить работать без учета регистра?

Сообщение от Gvozd Посмотреть сообщение
window.onload=function(){
all_elements=document.getElementsByTagName('*');
for(i=0,s=all_elements.length;i<s;i++)
	if(all_elements[i].tagName!="SCRIPT")
		for(j=0,s_=all_elements[i].childNodes.length;j<s_;j++)
			if(all_elements[i].childNodes[j].nodeType==3)
				all_elements[i].childNodes[j].textContent=all_elements[i].childNodes[j].textContent.replace(/AzriMan/g, 'AndryMan');
}

и еще, как по-грамотному переделать этот код для замены целого ряда слов, где каждое отдельное слово заменяется определенным значением?

Последний раз редактировалось bioz00, 26.07.2010 в 00:44.
Ответить с цитированием
  #30 (permalink)  
Старый 26.07.2010, 01:39
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Gvozd
textContent
наверно лучше использовать data вместо textContent Internet Explorer затыкаеться на textContent.
тогда скрипт для замены целого ряда слов будет примерно так выглядеть
<!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>

Последний раз редактировалось рони, 26.07.2010 в 01:48.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
всплывающая java script подсказка ehevnlem Элементы интерфейса 2 16.12.2008 16:57
В IE java Script Error! Хелп! web64 Общие вопросы Javascript 5 04.09.2008 17:09
Java script drug & drop MikeJn Общие вопросы Javascript 6 15.08.2008 13:29
Вакансия: Java Script программист, Москва, з/п от 50000 руб. Pavel Работа 0 02.07.2008 17:37
HELP: Java Script Error: “text” is undefined Aram Khachaturyan Общие вопросы Javascript 2 11.04.2008 16:57