Я думаю, что проблема связана с попыткой манипулировать возвращаемым значением document.getElementsByClassName
. Объект, возвращаемый этим вызовом метода, является HTMLCollection
, который похож на массив и определенно не HTMLElement.
Вы захотите перебрать свою коллекцию, а затем выполнить вызов ELEMENT.style.display = 'none';
. В настоящее время он настроен в большей степени как операция в стиле jQuery, где вызов .style.display = 'none'
применяется к каждому элементу коллекции, но поскольку вы выполняете ванильный JavaScript, вам придется делать это вручную.
В вашем JavaScript я бы сделал что-то вроде этого:
const collection = document.getElementsByClassName('list');
[ ...collection ].forEach(element => {
element.style.display = 'none';
});
Я заключил сделку [ ...collection ]
, потому что HTMLCollection не имеет собственных методов массива, и поэтому, чтобы избежать использования цикла for
, я сделал его массивом (странно, у него есть свойство Symbol.iterator
, так что это легко преобразовать в массив.