Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 9

Поправить поиск по HTML странице, чтобы он не искал слово, состоящее менее чем из 3х символов

26.11.2015, 23:57. Показов 2447. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, весь мозг сломал уже.
Не могу допилить данный поиск по HTML странице до того, чтобы он НЕ искал слово, которое состоит менее чем из 3х символов.
В своих поисках дошел до темы Регулярные выражения, но...
Некоторые люди, столкнувшись с проблемой, думают: «О, а использую-ка я регулярные выражения». Теперь у них есть две проблемы.
Джейми Завински
Вот полный код страницы
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html>
 <head>
  <meta charset="utf-8">
  <style type="text/css">
    .finde {        
        position: fixed;
        top:0px;
        right:0px;
        color:#999;
    }
  
  </style>
<script type="text/javascript">
var lastResFind=""; // последний удачный результат
var copy_page=""; // копия страницы в ихсодном виде
function TrimStr(s) {
     s = s.replace( /^\s+/g, '');
  return s.replace( /\s+$/g, '');
}
function FindOnPage(inputId) {//ищет текст на странице, в параметр передается ID поля для ввода
  var obj = window.document.getElementById(inputId);
  var textToFind;
  
  if (obj) {
    textToFind = TrimStr(obj.value);//обрезаем пробелы
  } else {
    alert("Введенная фраза не найдена");
    return;
  }
  if (textToFind === "") {
    alert("Вы ничего не ввели");
    return;
  }
   
  if(document.body.innerHTML.indexOf(textToFind)=="-1")
  alert("Ничего не найдено, проверьте правильность ввода!");
   
  if(copy_page.length>0)
        document.body.innerHTML=copy_page;
  else copy_page=document.body.innerHTML;
 
   
  document.body.innerHTML = document.body.innerHTML.replace(eval("/name="+lastResFind+"/gi")," ");//стираем предыдущие якори для скрола
  document.body.innerHTML = document.body.innerHTML.replace(eval("/"+textToFind+"/gi"),"<a name="+textToFind+" style='background:#38D878'>"+textToFind+"</a>"); //Заменяем найденный текст ссылками с якорем;
  lastResFind=textToFind; // сохраняем фразу для поиска, чтобы в дальнейшем по ней стереть все ссылки
  window.location = '#'+textToFind;//перемещаем скрол к последнему найденному совпадению
 } 
</script>
 
</head>
<body>
<div class="finde">
<input type="text"  id="text-to-find"> 
<input type="button" onclick="javascript: FindOnPage('text-to-find'); return false;" value="Поиск"/>
</div>
<br>
 
<table border='2' cellpadding='20'>
 
00:25:8E WeatherC The Weather Channel<br>
00:25:8F TridentM Trident Microsystems, Inc.<br>
00:25:90 SuperMic Super Micro Computer, Inc.<br>
00:25:91 Nextek NEXTEK, Inc.<br>
00:25:92 Guangzho Guangzhou Shirui Electronic Co., Ltd<br>
00:25:93 DatnetIn DatNet Informatikai Kft.<br>
00:25:94 Eurodesi Eurodesign BG LTD<br>
 
  
</table>
</body>
</html>
Не могу из этого сделать ничего хорошего, так как при введение одного или двух символов, например "br" или "a" весь html код ломается.
Как сделать нормальную фильтрацию перед поиском, чтобы исключить данную проблему?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.11.2015, 23:57
Ответы с готовыми решениями:

Каждое слово строки состоящее более, чем из 8 символов, сократить до первых 8 символов
Нуждаюсь в помощи. Нужно написать программу на C++(в принципе, и на Си можно) которая делает следующее: В каждой строке каждое слово,...

Дано слово. Вывести новое слово, состоящее из различных символов
Здравствуйте у меня такая задача Дано слово. Вывести новое слово, состоящее из различных символов нужна программа пробовал писать бред...

Найти слово начинающееся на м и состоящее больше чем из 3х букв
Здравствуйте. Делаю поиск по сайту с подсказкой слов. Бьюсь уже не первый день над регулярным выражением. Никак не выходит составить его...

3
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
27.11.2015, 11:58
Цитата Сообщение от MrFakir Посмотреть сообщение
Не могу из этого сделать ничего хорошего, так как при введение одного или двух символов, например "br" или "a" весь html код ломается.
Как сделать нормальную фильтрацию перед поиском, чтобы исключить данную проблему?
А если мне надо найти слово из 2 букв? Даже реализовав вашу задумку не искать меньше чем 3 символа, вы не избавитесь от проблем. Попробуйте ввести в поиск слово input. А проблема в том, что вы ищите слово в document.body.innerHTML используйте вместо этого document.body.textContent
А вообще, зачем эта трахомудия нужна? ctrl + f и найдете все что нужно.
1
0 / 0 / 0
Регистрация: 04.03.2013
Сообщений: 9
27.11.2015, 16:15  [ТС]
Цитата Сообщение от Shakalaka Посмотреть сообщение
А если мне надо найти слово из 2 букв?
Тут можно запросто обойтись и без этого
Цитата Сообщение от Shakalaka Посмотреть сообщение
Даже реализовав вашу задумку не искать меньше чем 3 символа, вы не избавитесь от проблем. Попробуйте ввести в поиск слово input.
Может в таком случае вообще сделать поиск только на русском языке? Согласно тому тексту, по которому будет вестись поиск, это вполне подходящее решение.
Цитата Сообщение от Shakalaka Посмотреть сообщение
А проблема в том, что вы ищите слово в document.body.innerHTML используйте вместо этого document.body.textContent
Попробовал заменить все document.body.innerHTML на document.body.textContent, вообще весь html на изнанку, при любой попытке поиска, что то делаю не так?
Цитата Сообщение от Shakalaka Посмотреть сообщение
А вообще, зачем эта трахомудия нужна? ctrl + f и найдете все что нужно.
Поиск будет вестись по страницам написанным на html коде внутри мобильного приложения, в нём явно нет никакого ctr+f. К сожалению реализовать поиск посредством приложения тоже не возможно (по ряду причин не относящихся к этой теме), поэтому приходиться обращаться к js.

Добавлено через 3 часа 51 минуту
Оказалось нужно было просто дождаться утра, добавил в код вот это
Java
1
2
3
4
  if (textToFind.length < 3) {
    alert("Введите не менее 3-х символов!");
    return;
  }
Стало
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
var lastResFind=""; // последний удачный результат
var copy_page=""; // копия страницы в ихсодном виде
function TrimStr(s) {
     s = s.replace( /^\s+/g, '');
  return s.replace( /\s+$/g, '');
}
function FindOnPage(inputId) {//ищет текст на странице, в параметр передается ID поля для ввода
  var obj = window.document.getElementById(inputId);
  var textToFind;
  
  if (obj) {
    textToFind = TrimStr(obj.value);//обрезаем пробелы
  } else {
    alert("Введенная фраза не найдена");
    return;
  }
  if (textToFind === "") {
    alert("Вы ничего не ввели");
    return;
  }
  
  if (textToFind.length < 3) {
    alert("Введите не менее 3-х символов!");
    return;
  }
   
  if(document.body.textContent.indexOf(textToFind)=="-1")
  alert("Ничего не найдено, проверьте правильность ввода!");
   
  if(copy_page.length>0)
        document.body.innerHTML=copy_page;
  else copy_page=document.body.innerHTML;
 
   
  document.body.innerHTML = document.body.innerHTML.replace(eval("/name="+lastResFind+"/g")," ");//стираем предыдущие якори для скрола
  document.body.innerHTML = document.body.innerHTML.replace(eval("/"+textToFind+"/g"),"<a name="+textToFind+" style='background:#38D878'>"+textToFind+"</a>"); //Заменяем найденный текст ссылками с якорем;
  lastResFind=textToFind; // сохраняем фразу для поиска, чтобы в дальнейшем по ней стереть все ссылки
  window.location = '#'+textToFind;//перемещаем скрол к последнему найденному совпадению
 }
Проблема решена, больше "менее трех символов не ищет!
Но хотелось бы подробнее узнать, как заставить такой поиск искать именно по тексту а не по html коду страницы?
0
Эксперт HTML/CSS
 Аватар для Shakalaka
653 / 556 / 322
Регистрация: 27.01.2015
Сообщений: 1,374
27.11.2015, 21:58
Цитата Сообщение от MrFakir Посмотреть сообщение
Проблема решена, больше "менее трех символов не ищет!
Сами придумали проблему и сами ее "решили"))
Я же вам говорю, а что если пользователь введет слово input? Ваша страница пойдет по... Да и более того, у вас это страница в мобильном приложении, ок, но там же могут быть обработчики кликов каких-то кнопок, например. Так вот если они не инлайновые, а навешены через addEventListener/on... они все так же похерятся.
Вот чувак плагин для jq написал, вроде рабочий http://www.gotoquiz.com/web-co... th-jquery/
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.11.2015, 21:58
Помогаю со студенческими работами здесь

Найти самое длинное слово состоящее из нечётного количества символов
Предложение состоит из некоторого количества слов, разделенных пробелами. Найти и вывести на экран самое длинное слово, состоящее из...

как сделать чтобы поиск в windows 7 не находил фаилы или вообще не искал их
(индексацию отключил)

Составить множество, состоящее из согласных букв, входящих более чем в одно слово
/ как реализовать условие? Дана непустая последовательность строчных букв английского алфавита, организованная в слова, разделенные...

Дано предложение, состоящее не менее чем из 5 слов. Напечатать все слова из предложения, содержащие ровно две буквы "d".
Помогите пожайлуста решить лабу: Дано предложение, состоящее не менее чем из 5 слов. Напечатать все слова из предложения,...

Составить и напечатать множество, состоящее из согласных букв, входящих более чем в одно слово
Дана непустая последовательность строчных букв английского алфавита, организованная в слова, разделенные пробелом. За последним словом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru