Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 05.11.2017, 18:44
Аватар для JAMLIGHT
Аспирант
Отправить личное сообщение для JAMLIGHT Посмотреть профиль Найти все сообщения от JAMLIGHT
 
Регистрация: 23.01.2017
Сообщений: 80

так правильно?
<script type="text/javascript">
var pElements = document.getElementsByTagName("p");
 
for (var i = 0; i < pElements.length; i++) {
    document.getElementsByTagName("p").innerHTML = document.getElementsByTagName("p").innerHTML.replace(eval("/name="+lastResFind+"/gi")," ");//стираем предыдущие якори для скрола;
    document.getElementsByTagName("p").innerHTML = document.getElementsByTagName("p").innerHTML.replace(eval("/"+textToFind+"/gi"),"<a name="+textToFind+" style='background:grey'>"+textToFind+"</a>"); //Заменяем найденный текст ссылками с якорем;
}
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.getElementsByTagName("p").innerHTML.indexOf(textToFind)=="-1")
  alert("Ничего не найдено, проверьте правильность ввода!");
  
  if(copy_page.length>0)
        document.getElementsByTagName("p").innerHTML=copy_page;
  else copy_page=document.getElementsByTagName("p").innerHTML;

  if (textToFind.length < 3) {
    alert("Введите не менее 3-х символов!");
    return;
  }

  lastResFind=textToFind; // сохраняем фразу для поиска, чтобы в дальнейшем по ней стереть все ссылки
  window.location = '#'+textToFind;//перемещаем скрол к последнему найденному совпадению
 } 
</script>
<body>
<h2>JavaScript поиск по странице</h2>
<input type="text" id="text-to-find" value=""> 
<input type="button" onClick="javascript: FindOnPage('text-to-find'); return false;" value="Искать"/>
<br/><i>Введите слово или фразу для поиска.</i>
<hr/>


    <div>
        <h3>p теги с текстом</h3>
        <p>Первый абзац С помощью вызова document.getElementsByTagName("p") находим все элементы параграфов. Этот вызов возвращает массив найденных элементов. Поэтому, чтобы получить отдельные элементы массива, необходимо пробежаться по ним в цикле.С помощью вызова document.getElementsByTagName("p") находим все элементы параграфов. Этот вызов возвращает массив найденных элементов. Поэтому, чтобы получить отдельные элементы массива, необходимо пробежаться по ним в цикле.</p>
        <p>Второй абзац С помощью вызова document.getElementsByTagName("p") находим все элементы параграфов. Этот вызов возвращает массив найденных элементов. Поэтому, чтобы получить отдельные элементы массива, необходимо пробежаться по ним в цикле.С помощью вызова document.getElementsByTagName("p") находим все элементы параграфов. Этот вызов возвращает массив найденных элементов. Поэтому, чтобы получить отдельные элементы массива, необходимо пробежаться по ним в цикле.</p>
        <p>Третий абзац С помощью вызова document.getElementsByTagName("p") находим все элементы параграфов. Этот вызов возвращает массив найденных элементов. Поэтому, чтобы получить отдельные элементы массива, необходимо пробежаться по ним в цикле.С помощью вызова document.getElementsByTagName("p") находим все элементы параграфов. Этот вызов возвращает массив найденных элементов. Поэтому, чтобы получить отдельные элементы массива, необходимо пробежаться по ним в цикле.</p>
    </div>

</script>

Последний раз редактировалось JAMLIGHT, 05.11.2017 в 19:22.
Ответить с цитированием
  #12 (permalink)  
Старый 05.11.2017, 18:50
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от JAMLIGHT
так правильно?
То есть прежние разговоры о том, что коллекция не обладает свойством innerHTML и:

document.getElementsByTagName("p").innerHTML=copy_ page;
copy_page=document.getElementsByTagName("p").inner HTML;

так нельзя, ни к чему, и нужно заново повторять?

Последний раз редактировалось laimas, 05.11.2017 в 18:56.
Ответить с цитированием
  #13 (permalink)  
Старый 05.11.2017, 18:58
Аватар для JAMLIGHT
Аспирант
Отправить личное сообщение для JAMLIGHT Посмотреть профиль Найти все сообщения от JAMLIGHT
 
Регистрация: 23.01.2017
Сообщений: 80

там
if(copy_page.length>0)
        document.getElementsByTagName("p").innerHTML=copy_page;
        else copy_page=document.getElementsByTagName("p").innerHTML;

Последний раз редактировалось JAMLIGHT, 05.11.2017 в 19:05.
Ответить с цитированием
  #14 (permalink)  
Старый 05.11.2017, 19:05
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Если коллекция элементов, то получить/изменить ее свойство innerHTML можно только обратившись к каждому ее элементу, то есть обходом коллекции в цикле.
Ответить с цитированием
  #15 (permalink)  
Старый 05.11.2017, 19:06
Аватар для JAMLIGHT
Аспирант
Отправить личное сообщение для JAMLIGHT Посмотреть профиль Найти все сообщения от JAMLIGHT
 
Регистрация: 23.01.2017
Сообщений: 80

Сообщение от laimas Посмотреть сообщение
То есть прежние разговоры о том, что коллекция не обладает свойством innerHTML
А какая обладает?
Ответить с цитированием
  #16 (permalink)  
Старый 05.11.2017, 19:09
Аватар для JAMLIGHT
Аспирант
Отправить личное сообщение для JAMLIGHT Посмотреть профиль Найти все сообщения от JAMLIGHT
 
Регистрация: 23.01.2017
Сообщений: 80

Сообщение от laimas Посмотреть сообщение
Если коллекция элементов, то получить/изменить ее свойство innerHTML можно только обратившись к каждому ее элементу, то есть обходом коллекции в цикле.
Поясните кодом.Там вроде как изменяется только найденный из цикла элемент.
Ответить с цитированием
  #17 (permalink)  
Старый 05.11.2017, 19:13
Аватар для JAMLIGHT
Аспирант
Отправить личное сообщение для JAMLIGHT Посмотреть профиль Найти все сообщения от JAMLIGHT
 
Регистрация: 23.01.2017
Сообщений: 80

Сообщение от laimas Посмотреть сообщение
То есть прежние разговоры о том, что коллекция не обладает свойством innerHTML
тоесть выражение document.getElementsByTagName("p").innerHTML -это бред?
Ответить с цитированием
  #18 (permalink)  
Старый 05.11.2017, 19:15
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от JAMLIGHT
А какая обладает?
Никакая, у <p>1</p> можно получить/изменить значение этого свойства, а у набора <p>1</p><p>2</p><p>3</p>..., сразу у всех нет.
Ответить с цитированием
  #19 (permalink)  
Старый 05.11.2017, 19:20
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от JAMLIGHT
document.getElementsByTagName("p").innerHTML -это бред?
Полный, так как вернет undefined, а при попытки изменения ничего не произойдет.
Ответить с цитированием
  #20 (permalink)  
Старый 05.11.2017, 19:21
Аватар для JAMLIGHT
Аспирант
Отправить личное сообщение для JAMLIGHT Посмотреть профиль Найти все сообщения от JAMLIGHT
 
Регистрация: 23.01.2017
Сообщений: 80

окей, как обратиться в цикле?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать Ява скрипт Kavan Events/DOM/Window 2 20.05.2017 08:25
Куплю скрипт nbspwka Работа 2 06.02.2017 09:40
Модифицировать скрипт для работы с несколькими формами на одной странице javascript_pupil Общие вопросы Javascript 8 30.01.2017 12:53
как скопировать скрипт с переадресующей страници ramisa Элементы интерфейса 9 09.07.2013 23:59
добавление окошка в скрипт подсчета слов Гость Общие вопросы Javascript 10 11.03.2008 17:07