Javascript window.find поиск с учетом регистра в определенном div

У меня есть кнопка, которая использует функцию с window.find для поиска/выделения слова.

Проблема, с которой я столкнулся, заключается в том, что я не могу сделать этот поиск чувствительным к регистру. И если возможно, я хотел бы сделать поиск в определенном div.

http://jsfiddle.net/qhaofxyr/

var myButton = document.getElementById('myButtonId');
myButton.addEventListener('click', function() {findString ('Text',1,0,0,0,0,0)});

function findString (str) {
    if (parseInt(navigator.appVersion)<4) return;
    var strFound;
    if (window.find) {

        strFound=self.find(str);
        if (!strFound) {
            strFound=self.find(str,0,1);
            while (self.find(str,0,1)) continue;
        }
    }
    if (!strFound) console.info ("String '"+str+"' not found!")
        return;
}
<button id = "myButtonId">Find</button>

<div id = "myDivId1">
<p>
This is some text in a paragraph.<br>
It has Text placed in my first div.
</p>
</div>

<div id = "myDivId2">
<p>
This is some texT in a paragraph.<br>
It has tExt placed in my second div.
</p>
</div>
window.find — это нестандартная функция, поэтому трудно сказать, как заставить ее работать, так как даже не гарантируется ее наличие, не говоря уже о том, что она будет вести себя одинаково для каждого пользователя.
VLAZ 29.01.2019 08:38

Спасибо за указание на это, я не знал об этом, и это хорошо знать.

Joe Berg 30.01.2019 23:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
2
442
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Update window.find has a property aCaseSensitive which i was aple to find in

https://developer.mozilla.org/en-US/docs/Web/API/Window/find

Итак, здесь я обновил ваш код и использовал window.find(str, true), где логическое значение указывает операцию поиска aCaseSensitive.

var myButton = document.getElementById('myButtonId');
myButton.addEventListener('click', function() { findString ('Text',1,0,0,0,0,0)});

function findString (str) {
    if (parseInt(navigator.appVersion)<4) return;
    var strFound;
    if (window.find) {

        strFound=self.find(str, true);
        if (!strFound) {
            strFound=self.find(str,true,1);
            while (self.find(str,true,1)) continue;
        }
    }
}
<button id = "myButtonId">Find</button>

<div id = "myDivId1">
<p>
This is some text in a paragraph.<br>
It has Text placed in my first div.
</p>
</div>

<div id = "myDivId2">
<p>
This is some texT in a paragraph.<br>
It has tExt placed in my second div.
</p>
</div>

Спасибо, Ален, именно так я и представлял себе это в начале, но, поскольку мне нужно избегать слишком много возни со страницей, замена элемента не будет правильным подходом для меня. Элементы div на странице, которую я буду искать, содержат всего несколько слов (иногда одно слово), и все они разные, поэтому, если window.find — плохой выбор, возможно, можно было бы найти элемент div, содержащий слово, а затем выберите элемент (div), поэтому выбрано слово/слова div, например "выделено". Знаете ли вы, как этого добиться?

Joe Berg 30.01.2019 22:59

Хорошо, кажется, что window.find может быть чувствительным к регистру. я обновил свой ответ, посмотрите.

Alen.Toma 31.01.2019 04:45

Большое спасибо! Я отметил как ответ. Кажется, сейчас работает нормально. :)

Joe Berg 31.01.2019 07:41

Я также нашел кое-что еще, что выглядит многообещающе и может быть лучшим вариантом, чем использовать window.find (на основе комментария vlaz): stackoverflow.com/a/987376

Joe Berg 31.01.2019 07:46

Yah getSelection, знай об этом. это тоже может быть хорошим решением :)

Alen.Toma 31.01.2019 08:11

Я нашел это решение для getSelection (stackoverflow.com/a/987376) и сделал пример ниже, если кому-то еще это нужно.

Он выберет тег, содержащий ключевое слово.

var myButton = document.getElementById('myButtonId');
myButton.addEventListener('click', () => selectText());
    
function selectText(node) {
    var pSelect = document.querySelectorAll('p'), i;
    for (i = 0; i < pSelect.length; ++i) {
         if (pSelect[i].textContent.match('tExt')){
         var node = pSelect[i];
         }
    }

    if (window.getSelection) {
        const selection = window.getSelection();
        const range = document.createRange();
        range.selectNodeContents(node);
        selection.removeAllRanges();
        selection.addRange(range);
    } else {
        console.warn("Unsupported browser.");
    }
}
<h3>Button 'Find' selects the 'p' tag containing 'tExt'.</h3>

<button id = "myButtonId">Find</button>

<div id = "myDivId1">
<p>
This is some text in a paragraph.<br>
It has Text placed in my first div.
</p>
</div>

<div id = "myDivId2">
<p>
This is some texT in a paragraph.<br>
It has tExt placed in my second div.
</p>
</div>

Другие вопросы по теме

Elastic Search Scroll API Асинхронное выполнение
Как сделать полнотекстовый поиск с помощью Linq2db?
VBA Копирование ячеек, связанных с определенным ключевым словом в столбце
Как я могу сделать так, чтобы моя формула показывала пустое значение, если искомая ячейка пуста?
Создание поискового запроса MySQL из массива POST с объединенными таблицами
Создание шаблона регулярных выражений для извлечения чисел с плавающей запятой и целых чисел
Как объединить несколько агентов pacman в лабиринте без призраков, чтобы съесть все пищевые гранулы в условиях ограниченного времени?
Панель поиска добавить в качестве базового шаблона в один класс представлений Django
VBA - ошибка несоответствия типа для копирования ячеек, связанных с определенным ключевым словом в столбце
Объединение разбиения на страницы laravel с поиском в реальном времени с использованием ajax