buenas,
personalmente, desaconsejo el uso del bucle for/in en estructuras indexadas (arrays, colecciones o similares). ¿por que? porque for/in en realidad itera por todas las propiedades visibles de la estructura. de modo que si estas trabajando con cada uno de los elementos donde todos tienen una interfaz, al encontrarse con la propiedad que no implementa la interfaz genera fallo. es lo que te esta sucediendo en el codigo. getElementsByTagName devuelve una coleccion de elementos (parecido a un array) donde todos los elementos son referencias a elementos HTMLElement y adicional tiene la propiedad length que es visible en un bucle for/in. como sabras, length no tiene la misma interfaz que HTMLElement. personalmente usaria un bucle for normal.