Originariamente inviata da
KillerWorm
Ciao, ci sono due principali errori:
1 - Quando chiami una funzione in quel modo, cioè specificando la chiamata direttamente nell'elemento HTML attraverso un attributo per la gestione di un evento (nel tuo caso,
onchange="handleSelect()"), all'interno della funzione stessa non viene mantenuto il contesto di tale elemento, per cui la keyword
this (che usi nella funzione) non fa riferimento a quell'oggetto ma, in questo caso, all'oggetto principale (window).
Il contesto dell'oggetto potrebbe invece essere mantenuto se si definisce la gestione di tale evento direttamente nello script.
Esempio:
codice:
document.getElementById('elemento').onchange = faiQualcosa;
function faiQualcosa() {
console.log(this); // l'elemento da cui è scaturito l'evento
}
In alternativa se vuoi utilizzare l'impostazione del tuo codice, dovrai passare specificatamente (con un parametro) il riferimento di
this alla funzione, quindi sul tag HTML avrai una cosa del tipo
onchange="handleSelect(this)" mentre la funzione dovrai definirla con un argomento che riceve appunto il riferimento di quell'elemento; una cosa tipo:
codice:
function handleSelect(me) {
console.log(me); // l'elemento passato come parametro
}
.
2 - Perché l'evento onchange lo hai definito per l'elemento <form>? Benché tale evento possa essere definito anche per l'intero form, non ha comunque senso farlo in questo particolare caso dal momento che ti interessa solo verificare quando il valore viene cambiato nella prima select; devresti quindi definirlo per quella select, non per il form.
Fai qualche prova e vedi se con queste indicazioni riesci a risolvere.
Fai sapere.