Cómo no iterar a través de los elementos de un formulario en Internet Explorer

Traducción al español de un post de  Douglas T. Muth sobre este problemita que me estaba haciendo zapatear:

Así que, me encontré iterando a través de los elementos de un formulario hoy. Este código trabajó perfecto en FireFox:

for (key in form.elements) {
   var element = form.elements[key];
   ...
}

Pensaste que eso trabajaría en MSIE también, ¿no? Nooooo… intentar iterar a través de los elementos de esta forma en MSIE hará que obtenga métodos, configuración del lenguaje, y todo tipo de otras cosas que normalmente no se encuentran en el array de elementos. En vez de eso, tuve que hacer esto:

for (var i=0; i < form.elements.length; i++) {
   var element = form.elements[i];
   ...
}

Y por extraño que parezca, form.elements.length retorna solo el número de elementos del formulario, y no los métodos o cualquier otra cosa que haya aparecido antes.

Oh bueno, al menos pude acabar la tarea que se supone debía completar hoy en el trabajo. Eso es la parte importante.