JavaScript getElementById não obrigatório

Ok, então isso não pode ser considerado as melhores práticas e certamente não funcionou no IE8, mas getElementById não é necessário para obter elementos DOM. Tente.

Considere este trecho:

<body>
<div id="rumpus"></div>
</body>

<script type="text/javascript">
rumpus
.innerHTML = "roo";
</script>

Certamente, o rumpus é indefinido e gerará um erro ao tentar acessar um método dentro dele. Mas não. Quando a página é renderizada, tudo o que você vê é “roo” e nenhum erro no console.

Então o que acontece quando há uma variável definida igual ao ID? JavaScript considerará a var, mesmo se definida como inferior, como a variável a ser encontrada e ignorará o DOM.

<body>
<div id="rumpus"></div>
</body>

<script type="text/javascript">
rumpus
.innerHTML = "roo";
var rumpus;
</script>

Uncaught TypeError: Cannot set property 'innerHTML' of undefined

Eu tentei isso no IE10, Chrome 29, Firefox 24 e Safari 5 para Windows, todos resultando em sucesso. Não é assim com o IE8. Novamente, isso não deve ser usado como uma prática recomendada, mas pode explicar por que você está obtendo resultados estranhos (como eu) quando seu código não consegue acessar a variável que você pensa que seria (como o meu).