ルート要素の子ノードにアクセスしようとしていますが、返される要素がすべて「未定義」であるため、返される配列を含めてアクセスできません。
<html>
<head>
<script>
function dothis()
{
var elements = document.getElementsByTagName("body").parentNode.childNodes;
alert(elements.length);
}
</script>
</head>
<body onload="dothis();">
<p>Welcome</p>
<ul>
<li>hello</li>
</ul>
</body>
</html>