style возвращает inline-стиль, если я ничего не перепутал. Если opacity задано не с помощью атрибута style='opacity: .7', а из внешней таблицы стилей, то в er у вас попадает пустая строка. Затем к ней прибавляется (сложением строк, обратите внимание) 0.3 и в результате, очевидно, получается 0.3.
Исправить это можо, например, так:
function opp()
{
var elem = document.getElementById('bn');
var er=getComputedStyle(elem, '').opacity;
er = +er + 0.3; // приводим строку к числу и складываем
elem.style.opacity = er;
}