За последние 24 часа нас посетили 36715 программистов и 1708 роботов. Сейчас ищут 1065 программистов ...

Функция удаляющая строки с пустыми ячейками на JS или Jquery

Тема в разделе "Сделайте за меня", создана пользователем gw1516, 13 дек 2017.

  1. gw1516

    gw1516 Активный пользователь

    С нами с:
    4 май 2017
    Сообщения:
    29
    Симпатии:
    0
    Здравствуйте, делаю сравнение товаров на сайте, у многих товаров не заполнены характеристики, помогите пожалуйста написать функцию, которая будет удалять строки где все ячейки, кроме первой, пустые.
    [​IMG]
     
  2. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Пример в песочнице
    Код (Javascript):
    1. var table = $('table');
    2. cols = $('tr:first td',table).length - 1;
    3. $('tr', table).each(function(i, tr){
    4.     if($('td', tr).filter((i, td) => $.trim($(td).text()) === '').length === cols) {
    5.         $(tr).remove();
    6.     }
    7. });
    --- Добавлено ---
    На всякий случай, вариант на нативном:
    Код (Javascript):
    1. var table = document.querySelector('table');
    2. table.querySelectorAll('tr').forEach((tr) => {
    3.     if ([].slice.call(tr.querySelectorAll('td:not(:first-child)'))
    4.         .every((el) => el.textContent.trim() === '')) {
    5.         tr.parentNode.removeChild(tr);
    6.     }
    7. });
    --- Добавлено ---
    P.S. Кол-во строк с использованием jQuery и без == 7. Нужно ли подключать библиотеку, которая весит 80 с лишним КБ? ;)
     
    Dimon2x и gw1516 нравится это.
  3. gw1516

    gw1516 Активный пользователь

    С нами с:
    4 май 2017
    Сообщения:
    29
    Симпатии:
    0
    Cпасибо большое, все работает отлично, но есть одно но: если на странице несколько таблиц, то эти скрипты не работают, если оставить одну таблицу, то все работает
     
  4. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    В цикле выполнить для каждой таблице
    Код (Javascript):
    1. var tables = $('table');
    2. tables.each(function(i, table) {
    3.     var cols = $('tr:first td', table).length - 1;
    4.     $('tr', table).each(function(i, tr) {
    5.         if ($('td', tr).filter((i, td) => $.trim($(td).text()) === '').length === cols) {
    6.             $(tr).remove();
    7.         }
    8.     });
    9. });
     
    gw1516 нравится это.
  5. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @Deonis вопрос из любопытства.
    Зачем ты юзаешь JQuery, если знаешь нативный JS ? )
    или JQuery просто знаешь и не юзаешь?
     
  6. gw1516

    gw1516 Активный пользователь

    С нами с:
    4 май 2017
    Сообщения:
    29
    Симпатии:
    0
    Спасибо огромное. Есть еще небольшая проблема, некоторые ячейки у меня имеют такую структуру: <td><a><img></img><a><td>, т.е. для скрипта они пустые, но на самом деле их не нужно скрывать,т.к. там картинки товаров
     
  7. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Моё знакомство с JS началось лет семь назад и именно с jQuery. Только через год-полтора, я понял, что без нативного далеко не уедешь. Многие проекты, которые мне приходилось и приходиться дорабатывать, уже написаны с использованием jQuery и там я пишу на нём. А в тех, что начинаю сам и, где jQuery действительно неоправдан, пишу на нативном. Или, например, клиент нашел и хочет подключить какой-нибудь bootstrap-овский шаблон, а там уже jQuery задействован.
    Измените:
    1. Если jQuery, то метод .text() на .html()
    2. Если читый JS, то свойство textContent на innerHTML
    --- Добавлено ---
    @TeslaFeo, ах, да... Я совсем забыл про еще один фактор - лень иногда берет верх ;)
     
    gw1516 и TeslaFeo нравится это.
  8. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    @Deonis, уже пишешь всё только на новом синтаксисе, как в примерах? По поводу браузеров, которые его не поддерживают, не паришься?
     
  9. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Как же без этого? До сих пор попадаются клиенты, которым нужна поддержка древних ослов. Выручает Babel JS