Hola
Sí, tienes razón a media.
Fíjate, que a la función se le pasa un argumento, que equivale a la posición del div. Es decir,
como se le envia un "2" estamos haciendo referencia a
<div id="d"/>DIV 2</div>.
Además, usamos
document.getElementsByTagName('div');, para meter en una matriz todos los elementos con ese tag.
En resumen, realmente no estamos trabajando con las id. Pero como es lo que le ocurre a
@Sipy
Ahora un caso en el que varios elementos tienen la misma id y name
Cita: <input type="text" name="t[]" id="t[]" value="1" />
<input type="text" name="t[]" id="t[]" value="2" />
<input type="text" name="t[]" id="t[]" value="3" />
Podemos acceder a cada elemento usando
getElementsByName. En este caso te daría un arreglo, con lo cual otra vez puedes acceder a cada uno de ellos, sin problemas. Con lo cual otra vez no trabajamos con sus id
Espero haberme explicado, no soy muy bueno en esto de explicar la teoría