Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Удалить строку в таблице при изменении стиля другоо объекта по атрибуту (https://javascript.ru/forum/events/83786-udalit-stroku-v-tablice-pri-izmenenii-stilya-drugoo-obekta-po-atributu.html)

firsmember 12.03.2022 07:15

Удалить строку в таблице при изменении стиля другоо объекта по атрибуту
 
Приветствую вас всемогущие! Помогите пожалуйста сделать следующее:
Имею div с классом print-order-grid ui-sortable, в нем уже имеются div с классом print-order-cell при определенных действиях на странице в этом блоке появляются дополнительные блоки с таким же классом print-order-cell но с атрибутом data-id="11100" (id может быть любым), так вот нужно при каждом добавлении такого блока перезагрузить страницу 1 раз.

Aetae 12.03.2022 07:33

(function wait() {
  const block = document.querySelector('.print-order-grid.ui-sortable .print-order-cell[data-id]');

  if (block)
    location.reload();
  else
    setTimeout(wait, 100);
}());

firsmember 12.03.2022 08:07

Перезагрузка страницы сработала, но перезагружает он не 1 раз, а зацикливается т.к. после перезагрузки он этот блок (с тем же data-id при появлении которого мы перезагружали страницу) снова воспринимает как вновь добавленный и соответственно перезагружается опять...
причиной тому, то, что после перезагрузки этот блок добавляется добавляется динамически и скрипт воспринимает его, как новый...

Вот в том то и проблема у меня... может нужно как то в куки data-id этого блока записать ? или как?

Aetae 12.03.2022 08:35

Нужно. В задаче этого не было.

const previousIds = new Set(JSON.parse(localStorage.previousIds || '[]'));

(function wait() {
  const newIds = Array.from(
    document.querySelectorAll('.print-order-grid.ui-sortable .print-order-cell[data-id]'),
    block => block.getAttribute('data-id')
  ).filter(id => !previousIds.has(id));

  if (newIds.length) {
    localStorage.previousIds = JSON.stringify([...previousIds, ...newIds]);
    location.reload();
  } else {
    setTimeout(wait, 100);
  }
}());

firsmember 12.03.2022 17:47

Супер, премного благодарен вам, киньте в ЛС, ваш кошелек юмани - закину вам на бутылочку пива)


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