Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как заставить цикл вывести все совпадения? (https://javascript.ru/forum/misc/43935-kak-zastavit-cikl-vyvesti-vse-sovpadeniya.html)

Coca-Cola 27.12.2013 07:59

Как заставить цикл вывести все совпадения?
 
function searchModul(){
var lowText = $('#serach').val();
for(var i = 1;i <= $('.catName').length;i++){
if($('#cid'+i).text().toLowerCase().indexOf(lowText.toLowerCase()) != '-1'){
$('#resSearch').html('<a href="/publ/'+i+'">'+$('#cid'+i).text()+'</a>');
}}};

Здрасьте. Скрипт выводит только первое попавшееся совпадение,а мне нужно чтобы он выводил все совпадения. Как это реализовать? Помогите!

Antonius 27.12.2013 08:22

А точно выводит первое, а не последнее? ;)

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

Coca-Cola 27.12.2013 10:35

Antonius,
Да вы открыли мне глаза) кажется я понял как это сделать, спасибо)))

рони 27.12.2013 10:46

Coca-Cola,
плюсуйте найденные совпадения в одну переменную потом добавляйте её на страницу 1 раз после цикла

Demath 01.01.2014 23:00

Цитата:

Сообщение от Coca-Cola (Сообщение 289530)
function searchModul(){
var lowText = $('#serach').val();
for(var i = 1;i <= $('.catName').length;i++){
if($('#cid'+i).text().toLowerCase().indexOf(lowText.toLowerCase()) != '-1'){
$('#resSearch').html('<a href="/publ/'+i+'">'+$('#cid'+i).text()+'</a>');
}}};

Здрасьте. Скрипт выводит только первое попавшееся совпадение,а мне нужно чтобы он выводил все совпадения. Как это реализовать? Помогите!

Для начала не помешало бы уменьшить число обращений к DOM

function searchModul()
{
    var lowText = $('#serach').val().toLowerCase(),
        n = $('.catName').length,
        res = '';
        
    for (var i = 1; i <= n; i++)
     { var txt = $('#cid'+i).text();
       if (txt.toLowerCase().indexOf(lowText) != -1)
         res += '<a href="/publ/'+i+'">'+txt+'</a>';
     }
     
    $('#resSearch').html(res);
}


Часовой пояс GMT +3, время: 05:48.