I write the following JS and run in IE 10:
function test() {
var nodes = document.getElementsByTagName(\"h1\");
document.writeln(nodes.length);
f
The error comes because you are running the code after the page is completed.
The first document.writeln call creates a new document with only the string in it. That means that the collection in nodes is no longer valid. It is a collection of elements in a document that doesn't exist any more, so you can't use any of the properties (like length) of the collection any more.
If you run the code while the page is being created, it works fine: http://jsfiddle.net/Guffa/4w949/