Ele pode usar o display também, o visibility esconde sem tirar a posição do elemento na página (fica um espaço em branco) o display já faz parecer que o elemento de fato não existe pois nem o espaço que ele ocupa fica visível.
O problema que vi, é que os DIVS são montados dentro de um forEach e no JS não tem um FOR pra esconder todos, o JS não faz o FOR sozinho quando tem mais de um elemento com o mesmo nome.
Tenta assim:
function hideAll(){
var clas = document.getElementsByTagName("div");
if (clas.length != null) {
for (i = 0; i < clas.length; i++) {
if(clas[i].className == "algo"){
clas[i].style.display = "none";
}
}
} else if(clas.className == "algo"){
clas.style.display = "none";
}
O if antes do FOR é porque se só tiver um DIV o JS não vai reconhecer como array e não vai passar no FOR.