Jump to content

rdfhnbhf

Newbie
  • Posts

    3
  • Joined

  • Last visited

rdfhnbhf's Achievements

Explorer

Explorer (1/14)

0

Reputation

  1. помогите с простым скриптом, можно только под IE, решение на Jquery приемлемо есть html такой структуры <DIV id=content> <DIV id=b1 class="myclass a01 20120720">текст</DIV> <DIV id=b2 class="myclass a02 20120720">текст1</DIV> <DIV id=b3 class="myclass a01 20120720">текст2</DIV> <DIV id=b4 class="myclass a02 20120720">текст3</DIV> </DIV> Что нужно от скрипта? Допустим выделили мышью на странице текст2. Класс у этого divа - а01. Нажимаем на клавиатуре Ins - показываются только записи <DIV id=b1 class="myclass a01 20120720">текст</DIV> <DIV id=b3 class="myclass a01 20120720">текст2</DIV> т.к. у обеих класс а01, остальные скрыты - (this).hide Нажали еще раз ins - показался весь контент страницы. Выделили текст1, класс у этого div а02, Нажимаем на клавиатуре Ins, показались только записи <DIV id=b2 class="myclass a02 20120720">текст1</DIV> <DIV id=b4 class="myclass a02 20120720">текст3</DIV>
  2. Помогите с решением/подскажите где подсмотреть готовое решение. Есть большая html страница, содержимое разделено на части, каждая часть предваряется <div id="a01">заголовок</div>, между ними <div id="a00">собственно текст</div> все страницы будут открываться локально на компьютере без интернета Требуется решение с минимум кода, вынесенного в script.js и mysite.css, можно + с привлечением jquery.js Вверху кнопка меню, при клике/наведении - выпадающее одноуровневое подменю текст элементов подменю - перечитывается всякий раз заново из тегов <div id="a01">заголовок</div> на странице при щелчке на элемент подменю - переход/скроллирование страницы к выбранному <div id="a01"> при необходимости могу поменять <div id="a01"> на <div name="ID заголовка"> для упрощения перехода по странице если меню теряет фокус - подменю скрывается P.s. в инете есть решения с созданием динамических меню с использованием <ul> и <li> Не подходит. Текст подменю должен читаться из содержимого страницы, которое может изменится - меню при этом также должно перестроится, эдакое "динамическое всплывающее оглавление для большой html книги"
  3. Новичок. Ищу скрипты приспосабливаю под свои нужды. Помогите с простой задачей в оформлении html одной вебстранички и адаптировании скрипта, использующего jquery. Не пугайтесь что написал текста много, задача для профи - простая, для меня огромная помощь. Спасибо! Задача: создать мгновенный поиск и подсветку найденного для больших веб-страниц, расположенных на локальном компьютере, замена CTRL+F: 1. Скрипты только JavaScript, текст скриптов вынести в отдельный файл js, работать скрипты должны в любом браузере (желательно включая браузеры на/для Android) 2. Страница должна иметь 2 блока: блок один, узкий с 2мя контролами (см. ниже), висящий все время вверху в топ страницы, поверх, не изменяющий позиции при скроллинге, блок два - с основным текстом страницы, где будет производится поиск 3. Дано: Основной текст страницы сверстан одинаковыми divами <div class="search_item">текст</div> 4. Блок 1 содержит 2 контрола: текстовое поле #q и checkbox #q1, используемый для переключения режимов поиска True = режим 1, False = режим 2 5. Текст введенный в блок 1 должен подсвечиваться на вебстранице, не чувствительно к регистру, не зависит вначале/в середине слова, все вхождения 6. Режим 1 - если текст найден - перейти (scroll страницы) к первому вхождению, если текст не найден/ничего не введено - перейти (скролл) в начало страницы 7. Режим 2 - если текст найден в элементе search_item - показать этот div-элемент, не найден - скрыть этот div-элемент, если ничего не введено - показать всю страницу 8. Скрипт(ы) мгновенного поиска запускаются вводом символов в текстовом поле 1 (н-р отслеживаем нажатия, keyup), а также снятием|установкой checkbox 1, т.е. последнее также должно подсвечивать/переходить/скрывать-показывать текущий текст в текстовое поле #q Все запчасти для будущей веб-страницы нашел в инете, помогите это подчистить, собрать в кучу <html> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script> <script src="search_and_highlight.js" type="text/javascript"></script> <script type="text/javascript">$().ready(function(){$('#q').focus()})</script> <style type="text/css"> .highlight {background-color:yellow;} </style> </head> <body> <div id="top"> <form action="javascript:void(0);"> <h3> <input id="q" name="q" autocomplete="off" type="text"> </h3> <input name="q1" type="checkbox" /> </form><p> </div> <div class="search_item">текст</div> <div class="search_item">текст</div> <div class="search_item">текст</div> <div class="search_item">текст</div> </body> </html> Собственно скрипт //эта часть работает как надо, находится в search_and_highlight.js $().ready(function(){ $('#q').keyup(function(){ $('.search_item').each(function(){ var re = new RegExp($('#q').val(), 'i') if($(this).text().match(re)){ $(this).show(); }else{ $(this).hide(); }; }); }); }); //эта тоже работает, только надо корректно вынести из вебстраницы в search_and_highlight.js чтобы это тоже срабатывало на события keyup-keyup change в #q <script type="text/javascript"> $(function() { $('#q').bind('keyup change', function(ev) { var searchTerm = $(this).val(); $('body').removeHighlight(); if ( searchTerm ) { $('body').highlight( searchTerm ); } }); }); </script> //эта почему то не работает в браузерах на android function scrollToFirstFoundTerm() { var firstFoundTerm = $('.highlight:first'); if (firstFoundTerm.length > 0) $('html').scrollTop(firstFoundTerm.offset().top); } //ниже - части скрипта по подсветке текста, найдено в инете работает как надо jQuery.fn.highlight = function(pat) { function innerHighlight(node, pat) { var skip = 0; if (node.nodeType == 3) { var pos = node.data.toUpperCase().indexOf(pat); if (pos >= 0) { var spannode = document.createElement('span'); spannode.className = 'highlight'; var middlebit = node.splitText(pos); var endbit = middlebit.splitText(pat.length); var middleclone = middlebit.cloneNode(true); spannode.appendChild(middleclone); middlebit.parentNode.replaceChild(spannode, middlebit); skip = 1; } } else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) { for (var i = 0; i < node.childNodes.length; ++i) { i += innerHighlight(node.childNodes[i], pat); } } return skip; } return this.each(function() { innerHighlight(this, pat.toUpperCase()); }); }; jQuery.fn.removeHighlight = function() { function newNormalize(node) { for (var i = 0, children = node.childNodes, nodeCount = children.length; i < nodeCount; i++) { var child = children[i]; if (child.nodeType == 1) { newNormalize(child); continue; } if (child.nodeType != 3) { continue; } var next = child.nextSibling; if (next == null || next.nodeType != 3) { continue; } var combined_text = child.nodeValue + next.nodeValue; new_node = node.ownerDocument.createTextNode(combined_text); node.insertBefore(new_node, child); node.removeChild(child); node.removeChild(next); i--; nodeCount--; } } return this.find("span.highlight").each(function() { var thisParent = this.parentNode; thisParent.replaceChild(this.firstChild, this); newNormalize(thisParent); }).end(); };
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy