Hola:
Interesante respuesta, pero la solución es hacia la pregunta
DOM para class (no es plural), así que la igualdad creo que es la respuesta idónea, pero sin duda es un matiz a considerar.
Sobre el bucle, en la zona de inicialización de la sintaxis de la instrucción for (la primera) es donde se hace el cálculo del total...
for (i = 0, todos = document.body.getElementsByTagName("*"), total = todos.length; i < total; i ++)
i = 0 -> se inicializa i;
todos = document.body.getElementsByTagName("*") -> todos = alias de todos los tags
total = todos.length -> se crea la variable total para evitar calcularla en cada paso del bucle.
De todos modos el problema del cálculo está cuando realmente se realiza un cálculo, cosa más que debatida en php con los bucles sobre arrays, usando en la condición de salida el cálculo de la longitud del array...
for ($i = 0; $i < count($datos); $i ++)... con esa sintaxis se recalcula la longitud del array en cada paso del bucle...
Lo que pasa con javascript y los bucles con arrays es que length es una propiedad de los arrays (no se llama a ningún método para obtener ese valor...)
Algo similar es recorrer cadenas en lenguajes como pascal y modula-2, donde las cadenas tienen una longitud máxima de 255 caracteres, y viene dado por el primero de esos caracteres, o sea que el máximo valor se obtiene del primero (una curiosidad de los distintos lenguajes...)
Saludos