Без обид, но неуместно менять класс на лету, так как он заставляет интерпретатор CSS пересчитывать визуальное представление всей веб-страницы.
Причина в том, что интерпретатору CSS практически невозможно узнать, можно ли изменить какое-либо наследование или каскадирование, поэтому краткий ответ:
Никогда не меняйте className на лету! -)
Но обычно вам нужно всего лишь изменить свойство или два, и это легко реализовать:
function highlight(elm){
elm.style.backgroundColor ="#345";
elm.style.color = "#fff";
}