With this fiddle http://jsfiddle.net/mungbeans/f2ne6/2/
why is the opacity undefined when accessed in js when its defined in the css?
I presume the answer is because the style is also undefined, why is that, does the style need adding somewhere explicitly before the opacity can be defined?
the lack of  is a typo created as I copied from source to fiddle. The style/opacity problem still exits in the original code which is correct in that aspect.
since getElementsByTagName returns a nodeList.
This still doesn't get the value. You'll need to do the following: