Se vedi la seconda funzione, ti accorgi che alla riga 10 si blocca perché l'oggetto arrCategoria[newDisplay] non è definito. Cambiala con questa e vedi l'alert che viene fuori:
codice:
function handleChange1(newDisplay) {
var StateSelect, CategoriaSelect, NumEntries, i;
StateSelect = document.getElementById("categoria");
CategoriaSelect = document.getElementById("articolo");
for (i = CategoriaSelect.length; i > 1; i--) {
CategoriaSelect.options[i-1] = null;
}
alert('Oggetto arrcategoria[newDisplay]: ' + arrcategoria[newDisplay] + '\nvariabile newDisplay: ' + newDisplay);
if (newDisplay >= 0) {
NumEntries = arrcategoria[newDisplay].length;
for (i = 1; i <= NumEntries; i++) {
var a = arrcategoria[newDisplay];
var b = a[i-1];
// CategoriaSelect.options[i] = new Option((arrcategoria[newDisplay])[i-1],(arrcategoria[newDisplay])[i-1]);
CategoriaSelect.options[i] = new Option(b,b);
}
}
CategoriaSelect.selectedIndex = 1;
}
La variabile newDisplay è definita e c'è, ma non corrisponde con l'indice associativo dell'array: infatti per la voce PLAXANDGLASS restituisce proprio "PLEXANDGLASS" anziché "arrPLEXANDGLASS".
Sull'handler onChange la dicitura corretta sarebbe questa:
codice:
onChange="handleChange1(this.options[this.selectedIndex].value)"
ma sicuro che è quello che vuoi che ti restituisca?