dunque, attr_id è il parametro che viene passato alla funzione (cioè se tu la chiami getById("pippo"), al momento dell'esecuzione della funzione in attr_id ci sarà la stringa "pippo"), per quanto riguarda document.all[attr_id], non fa altro che ritornare l'elemento identificato dalla chiave attr_id nel dizionario all dell'oggetto document.
I dizionari, che in Js sono chiamati Object, sono un array nominale, cioè una collezione dove i valori sono indicati da una chiave alfanumerica, non da un numero.
Es.
codice:
Un array
var myArray = ['uno', 'due', 'tre'];
Per ottenere un valore da myArray, devi chiamare:
myArray[0], myArray[1], e così via, passando tra le parentesi l'indice del valore desiderato.
Un oggetto
var myObject = {"unoKey" : "uno", "dueKey" : "due"};
Per ottenre un valore da myObject ci sono due metodi:
myObject.unoKey, chiamando la chiave come attributo dell'oggetto, ne ottieni il value
myObject["unoKey"], passando tra le parentesi la chiave in stringa ne ottieni il valore.
Spero di essere stato chiaro.