Чтобы проверить, все ли элементы `<li>` имеют класс "filled", лучше использовать метод `every()` массива. Таким образом, вам не нужно добавлять класс "active" в каждом цикле, а просто проверять условие один раз. Вот как это можно сделать:
```javascript
let li = document.querySelectorAll("li");
let button = document.querySelector("button");
// Проверяем, все ли элементы li имеют класс "filled"
if (Array.from(li).every((e) => e.classList.contains("filled"))) {
// Если все li имеют класс "filled", добавляем класс "active" к кнопке
button.classList.add("active");
}
```
### Исправленный код:
Вот полной версией кода, используя ваш HTML и CSS:
```html
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Проверка классов</title>
<style>
button {
opacity: 0.5;
}
button.active {
opacity: 1;
}
</style>
</head>
<body>
<ul>
<li class="filled">Текст</li>
<li class="filled">Текст</li>
<li class="filled">Текст</li>
<li class="filled">Текст</li>
<li class="filled">Текст</li>
</ul>
<button>Показать</button>
<script>
let li = document.querySelectorAll("li");
let button = document.querySelector("button");
// Проверяем, все ли элементы li имеют класс "filled"
if (Array.from(li).every((e) => e.classList.contains("filled"))) {
// Если все li имеют класс "filled", добавляем класс "active" к кнопке
button.classList.add("active");
}
</script>
</body>
</html>
```
### Объяснение кода:
1. `querySelectorAll("li")` возвращает NodeList всех элементов `<li>`.
2. `Array.from(li)` преобразует NodeList в массив.
3. `every()` проверяет, удовлетворяют ли все элементы условию, что у них есть класс "filled".
4. Если все элементы проходят проверку, добавляется класс "active" к кнопке.
Таким образом, код будет корректно проверять наличие класса у элементов списка и добавлять класс к кнопке только в том случае, если у всех `<li>` есть необходимый класс.