Hola:
No es que no funcione, es que al poner el código "a capella" se me coló el style...
Verás, si las clases solo van a cambiar uno de los estilos, tal vez sea más eficiente cambiar ese estilo, y por eso pensé poner:
style.display = (i == elegido) ? "block":"none";
Y no sería necesario el tag style... pero si se usan las clases el style sobra:
listado[i].className = (i == elegido) ? "selected":"no_selected";
Saludos