Para cada loop são quebrados no IE8 e abaixo

Uma forma relativamente pouco conhecida e ainda menos apreciada de fazer um loop for em javascript funciona da seguinte maneira:

for (key in array) {
var element = array[key];

}

Você pode reconhecer isso como essencialmente o equivalente do loop foreach em php e outras linguagens. É uma estrutura muito útil ao lidar com matrizes associativas, ou apenas para economizar alguma digitação. Infelizmente, existem algumas peculiaridades nessa abordagem. Notavelmente, como de costume, no Internet Explorer.

Enquanto estava no trabalho hoje, eu estava percorrendo alguns elementos do formulário, caso a página em que o script fosse executado tivesse vários formulários. Embora minha página de teste tivesse apenas um único elemento de formulário, o IE me deu vários elementos adicionais, como a letra p e o número 13 …

Fez o mesmo para o array form.elements em um loop interno. Parece ser um problema no IE8 e versões anteriores na maneira como ele lida com a sintaxe de cada loop.

Como um substituto, eu altamente recomendo em vez de fazer uso da função jQuery.each se você estiver usando jQuery (você deveria ser).

A referência pode ser encontrada aqui: http://api.jquery.com/jQuery.each/