Что нужно изменить в этом коде, чтобы он работал правильно?

Как я могу улучшить функцию `checkAmountRows`, чтобы она динамически изменяла количество элементов в реальном времени, и как можно упростить код для достижения этой цели?
  • 19 декабря 2023 г. 9:57
Ответы на вопрос 2
Ниже приведен код. В комментариях объяснено, что требуется изменить и как улучшить функцию `checkAmountRows`:

```
function checkAmountRows() {
  // Получение всех строк таблицы
  var rows = document.querySelectorAll('tr');
  
  // Получение общего количества строк
  var totalRows = rows.length;
  
  // Получение количества видимых строк (необходимо учесть все строки, 
  // у которых установлено свойство display: none)
  var visibleRows = 0;
  for (var i = 0; i < totalRows; i++) {
    if (rows[i].offsetHeight > 0) {
      visibleRows++;
    }
  }
  
  // Получение количества скрытых строк (разница между общим количеством строк
  // и количеством видимых строк)
  var hiddenRows = totalRows - visibleRows;
  
  // Вывод количества видимых и скрытых строк
  console.log('Видимых строк: ' + visibleRows);
  console.log('Скрытых строк: ' + hiddenRows);
}

// Вызов функции при загрузке страницы
window.onload = checkAmountRows;
```

Чтобы улучшить функцию `checkAmountRows` и динамически изменять количество элементов в реальном времени, мы можем добавить прослушиватель события `resize` для окна браузера. Каждый раз при изменении размера окна будет вызываться функция `checkAmountRows`. Таким образом, количество видимых и скрытых строк будет обновляться автоматически.

```
function checkAmountRows() {
  var rows = document.querySelectorAll('tr');
  var totalRows = rows.length;
  
  var visibleRows = 0;
  for (var i = 0; i < totalRows; i++) {
    if (rows[i].offsetHeight > 0) {
      visibleRows++;
    }
  }
  
  var hiddenRows = totalRows - visibleRows;
  
  console.log('Видимых строк: ' + visibleRows);
  console.log('Скрытых строк: ' + hiddenRows);
}

window.onload = function() {
  checkAmountRows();
  window.addEventListener('resize', checkAmountRows);
};
```

Добавленная часть кода `window.addEventListener('resize', checkAmountRows)` привязывает функцию `checkAmountRows` к событию изменения размера окна.
Переменные у вас статичные, при вызове все те же значения left и amountRows, берите их внутри функции
Похожие вопросы