текстовый поиск в JavaScript? - PullRequest
8 голосов
/ 18 июля 2010

У меня есть страница с более чем 200 ссылками с таким форматированием.

<h1>
  <a href="somelink">Somelink</a>
  some text that explain the meaning of the link. 
</h1>

Теперь, чтобы облегчить поиск по этой ссылке, я поставил поле поиска.

Мое требование - поиск по всему этому тегу и поиск ссылок, которые имеют отношение к окно поиска и скрытие остальной части ссылки.

Как это сделать в javascript? (Я знаю основные вещи javascript / jquery, но как выполнить полнотекстовый поиск?) Мне не нужна сортировка по релевантности, достаточно просто фильтровать и показывать скрытие

Ответы [ 3 ]

7 голосов
/ 18 июля 2010

Вы можете перечислить все теги h1, получить внутренний html и сделать indexOf, или вы можете использовать jQuery , который имеет пользовательскую функцию , содержит , которая возвращает элементы, имеющиезаданный текст.

Вот пример, скопированный из документации jQuery

<!DOCTYPE html>
<html>
<head>
  <script src="http://code.jquery.com/jquery-latest.min.js"></script>
</head>
<body>

<div>John Resig</div>

<div>George Martin</div>
<div>Malcom John Sinclair</div>
<div>J. Ohn</div>


<script>
$("div:contains('John')").css("text-decoration", "underline");
    </script>
</body>
</html>
5 голосов
/ 18 июля 2010

Надеюсь, вы найдете это полезным.Возможно, это не элегантный и не самый эффективный способ, но он позволяет вводить несколько поисковых терминов и дает частичные совпадения (которые могут быть или не быть желательными).Как я сделал, когда вы нажмете кнопку поиска, он скроет все остальные элементы, кроме тех, которые соответствуют любому из ваших условий поиска, но вы можете изменить это, чтобы сделать все, что вы хотите с элементами массива результатов.Я не рекомендую использовать это точно, но, надеюсь, это даст вам представление о том, как вы можете реализовать свое собственное решение (если вы решите использовать решение, отличное от быстрого поиска).

<html>
<head>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type='text/javascript' language='javascript' >
$(document).ready(function() {
    var links = new Array();
    $("h1").each(function(index, element) {         
        links.push({
            text: $(this).text(),
            element: element
        });
    });

    $("#searchButton").click(function() {
        var query = $("#searchBox").val();
        var queryTerms = query.split(' ');

        var results = new Array();
        for(var i = 0; i < queryTerms.length; i++) {
            for(var j = 0; j < links.length; j++) {
                if (links[j].text.indexOf(queryTerms[i]) > -1) {
                    results.push(links[j].element);                     
                    }
            }
        }

        $("h1").each(function(index, element) {
            this.style.display = 'none';
        });
        for(var i = 0; i < results.length; i++) {
            results[i].style.display = 'block';
        }

    });     

});
</script>

</head>
<body>
<p>
<input id="searchBox" type="text" />
<input type="button" id="searchButton" value="Search" />
</p>

<h1>
  <a href="somelink">Somelink1</a>
  asdf
</h1>
<h1>
  <a href="somelink">Somelink2</a>
  ssss
</h1>
<h1>
  <a href="somelink">Somelink3</a>
  3333
</h1>
<h1>
  <a href="somelink">Somelink4</a>
  232323
</h1>
<h1>
  <a href="somelink">Somelink5</a>
  fffff
</h1>

 </body>
 </html>
3 голосов
/ 18 июля 2010

Я нашел один.

http://github.com/riklomas/quicksearch

, который использует регулярное выражение для поиска.

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