@pavlikmd

Как выполнить функцию для каждой строки таблицы последовательно?

Доброй ночи, есть определленый сервис, который подтягивает таблицу из базы, нужно сделать функцию которая каждых 3 секунды будет обрабатыть каждую строку таблицы и вписывать значение.

Мое решение: присваиваем каждому tr клас procesing изначально в бд, при выводе у нас получается вот так
5a2dcb21c0ea9956364606.png

Потому через setInterval 3 сек запускаю функцию, она проверяет каждый tr.procesing, потом берет первый tr с класом и делает свои манипуляции, после окончания удалят клас procesing, и функция которая вызывается интервалом запускает опьять для первого tr.procesing (в коде он уже второй будет, так как первый отработало.). Сделал так:

function do_functions() {
    $('#table_ajax_load tbody tr.procesing:nth-child(1)').each(function () {
       $(this).find('.delivery_wait_td button').html('Ok');
       $(this).removeClass('procesing');
    });
}
window.setInterval(function () {
    do_functions();
}, 3000);


но оно не работает, хоть я и удаляю клас оно все равно обращается к первому tr

Немного запутано обьяснил.

Вообщем суть такая, надо логику или код, чтобы отрабатывать каждую строчку таблицы, и не начинать следующую пока предыдущую не отработало.

Сейчас она сразу все пытается обработать, а мне нужно поочередно.
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
@pavlikmd Автор вопроса
Сам задал, сам ответил. Вспомнил что вместо nth-child в jquery существует eq(). В итоге сделал так:
function do_functions() {
    $('#table_ajax_load tbody tr.procesing').eq(0).each(function () {
       $(this).find('.delivery_wait_td button').html('Ok');
       $(this).removeClass('procesing');
    });
}
window.setInterval(function () {
    do_functions();
}, 3000);


Все спасибо) Все работает!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы