Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 08.03.2016, 14:39
Интересующийся
Отправить личное сообщение для santey12 Посмотреть профиль Найти все сообщения от santey12
 
Регистрация: 27.02.2016
Сообщений: 18

destus,
не могли бы Вы мне объяснить почему, после того, как я убираю "return true" поиск становится точнее?
Ответить с цитированием
  #12 (permalink)  
Старый 08.03.2016, 14:43
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

santey12,
потому что return прерывает дальнейшее выполнение функции. Нашли первое совпадение => return true => выход из функции, хотя совпадения ещё были.
Если функция из себя ничего интересного не представляет, и не должна возвращать какое-то выражение, можно вообще return не использовать. Пусть она возвращает undefined.
Ответить с цитированием
  #13 (permalink)  
Старый 08.03.2016, 14:50
Интересующийся
Отправить личное сообщение для santey12 Посмотреть профиль Найти все сообщения от santey12
 
Регистрация: 27.02.2016
Сообщений: 18

destus, еще хотел спросить, для сортировки лучше использовать новую функцию или продолжить работу с моей?
Ответить с цитированием
  #14 (permalink)  
Старый 08.03.2016, 14:56
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Поиск по строкам таблицы
santey12,
<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <style type="text/css">
         tbody tr.search {
            background-color: paleturquoise;
        }
    </style>

    <title></title>

    <script>
window.onload = function() {
    function b(d) {
        var b = 1;
        [].forEach.call(e, function(a) {
            a.classList.remove("search");
            [].some.call(a.querySelectorAll("td"), function(a) {
                var b = a.querySelector("select");
                return  b ? ~b.value.indexOf(d) : ~a.innerHTML.indexOf(d)
            }) ? (d && a.classList.add("search"), c.insertBefore(a, tbl.rows[b++])) : c.appendChild(a)
        })
    }
    var c = document.querySelector("#tbl tbody"),
        e = c.querySelectorAll("tr");
    btn.onclick = function() {
        b(srch.value)
    }
};
    </script>


</head>

<body>
    <p align="middle">
        <input id="srch" type="text" class="srch" value="Введите текст для поиска" onfocus="this.value=''">
        <button id="btn" class="button">Поиск</button>
    </p>
    <script src="js/tbl.js"></script>
    <table id="tbl" border="1">
        <thead>
            <tr>
                <th>Номер строки</th>
                <th>Марка</th>
                <th>Тип кузова</th>
                <th>Дата</th>
                <th>Количество</th>
                <th>Статус</th>
            </tr>
        </thead>
        <tbody>
            <tr>
                <td>1</td>
                <td>Хендай</td>
                <td>универсал</td>
                <td value="2016-01-01">2016-01-01</td>
                <td>11</td>
                <td>
                    <select>
                        <option value="Open">Open</option>
                        <option value="In progress">In progress</option>
                        <option selected value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>2</td>
                <td>Тойта</td>
                <td>седан</td>
                <td value="2016-02-01">2016-02-01</td>
                <td>10</td>
                <td>
                    <select>
                        <option selected value="Open">Open</option>
                        <option value="In progress">In progress</option>
                        <option value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>3</td>
                <td>Лада</td>
                <td>седан</td>
                <td value="2016-03-01">2016-03-01</td>
                <td>300</td>
                <td>
                    <select>
                        <option selected value="Open">Open</option>
                        <option value="In progress">In progress</option>
                        <option value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>4</td>
                <td>Форд</td>
                <td>хэтчбек</td>
                <td value="2016-04-01">2016-04-01</td>
                <td>120</td>
                <td>
                    <select>
                        <option value="Open">Open</option>
                        <option selected value="In progress">In progress</option>
                        <option value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td>5</td>
                <td>Шкода</td>
                <td>лифтбэк</td>
                <td value="2016-05-01">2016-05-01</td>
                <td>99</td>
                <td>
                    <select>
                        <option value="Open">Open</option>
                        <option value="In progress">In progress</option>
                        <option selected value="Resolved">Resolved</option>
                    </select>
                </td>
            </tr>
        </tbody>
    </table>

</body>

</html>
Ответить с цитированием
  #15 (permalink)  
Старый 08.03.2016, 14:57
Аватар для destus
Профессор
Отправить личное сообщение для destus Посмотреть профиль Найти все сообщения от destus
 
Регистрация: 18.05.2011
Сообщений: 1,207

santey12,
Мне кажется что в этой же будет оптимальнее.
Ответить с цитированием
  #16 (permalink)  
Старый 08.03.2016, 15:09
Интересующийся
Отправить личное сообщение для santey12 Посмотреть профиль Найти все сообщения от santey12
 
Регистрация: 27.02.2016
Сообщений: 18

рони, не совсем понимаю, как происходит выделение найденных строк?
Ответить с цитированием
  #17 (permalink)  
Старый 08.03.2016, 15:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

santey12,
если в одной из ячеек строки есть совпадение по тексту или в селекторе и значение поиска существует, присваивается класс - строка 23 -- есть совпадение или нет вычислят строки 20 - 23
Ответить с цитированием
  #18 (permalink)  
Старый 08.03.2016, 15:26
Интересующийся
Отправить личное сообщение для santey12 Посмотреть профиль Найти все сообщения от santey12
 
Регистрация: 27.02.2016
Сообщений: 18

Если в поиске задать "2", то он выделит всю таблицу, т.к поле "дата" начинается с "2".
Ответить с цитированием
  #19 (permalink)  
Старый 08.03.2016, 15:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

santey12,
и чего?
Сообщение от рони
осталось только дождаться когда ТС придумает приоритеты сортировки
Ответить с цитированием
  #20 (permalink)  
Старый 08.03.2016, 15:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

santey12,
или используйте регу для точного совпадения
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по таблице и перестановка строк KemPavel jQuery 2 19.10.2015 12:28
Поиск по таблице - вывод cript Элементы интерфейса 8 15.05.2014 07:50
фильтрация и поиск в таблице htm FedyaLutkovski Элементы интерфейса 0 28.12.2012 20:11
Криво работает скрипт jQuery поиска в таблице dim565 jQuery 0 17.12.2011 21:23
Поиск в тексте javascript jQuery 3 31.05.2011 11:40