The problem has already been explained in the other answer, which suggests you change the event click for mouseover. If you want something to happen when you pass the mouse then it really has to be the event mouseover. This way each time you mouse over the element, it changes the class ativo permanently, and so even if you take the mouse over all the elements, the class stays.
However the code to place and remove the class ativo is more complicated than it should be. If you refer to documentation you will see that each element has a property classList that allows you to modify the list of classes in a simple way. The methods relevant to the problem are:
classList.add - Adds one more class to the element
classList.remove - Removes the specified class from the widget’s class list
Using this the code that comes inside the event would look like this:
btns[i].addEventListener("mouseover", function() {
var current = document.getElementsByClassName("ativo")[0]; //apanhar o ativo
current.classList.remove("ativo"); //remover a classe nele
this.classList.add("ativo"); //adicionar a classe ativo naquele onde tem o mouse
});
The two initial queries of elements to html, can also be simplified in one querySelectorAll forcing him to pick up only members of the class botao within the div777:
var btns = document.querySelectorAll("#div777 .botao");
Example with all that was mentioned:
var btns = document.querySelectorAll("#div777 .botao");
for (var i = 0; i < btns.length; i++) {
btns[i].addEventListener("mouseover", function() {
var current = document.getElementsByClassName("ativo")[0];
current.classList.remove("ativo");
this.classList.add("ativo");
});
}
.botao {
border: none;
outline: none;
padding: 10px 16px;
background-color: #f1f1f1;
cursor: pointer;
font-size: 18px;
}
.ativo, .botao:hover {
background-color: #666;
color: white;
}
<div id="div777">
<a class="botao">1</a>
<a class="botao ativo">2</a>
<a class="botao">3</a>
<a class="botao">4</a>
<a class="botao">5</a>
</div>