aún tienes errores; y vaya que no me había fijado otro detalle.
var mat[a] = ... ahí javascript entiede que quieres crear una variable con nombre
mat[a] pero la sintaxis no es válida. es decir, fíjate que tienes un
var al inicio. la variable
mat ya esta definida, por lo que no tienes que volver a usar la declaración
var.
el otro error, no puedes usar ambas sintaxis a la misma para accesar una propiedad de un objeto. me refiero a esto,
form1.["Materia"+a].value. fíjate que estoy marcando en rojo el punto antes de los corchetes. como había mencionado antes, en javascript tienes dos formas de accesar propiedades: por sintaxis de punto o por corchetes. puedes alternarlas, pero no debes usarlas ambas a la misma vez.
Código:
// asumiendo que tenemos el siguiente objeto
var obj = {
arr: [0,1,1,2,3,5],
pobj: {
foo: "is_foo",
bar: true
},
child: 2
};
// las siguientes muestras son sintaxis válidas
// digamos que queremos obtener la propiedad foo que contiene el string "is_foo"
// sintaxis de punto
obj.pobj.foo;
// sintaxis de corchete
obj['pobj']['foo'];
// sintaxis de punto y corchete
obj.pobj['foo'];
obj['pobj'].foo;
básicamente el uso del corchete consiste en reemplazar el punto por un par de corchetes y dentro el nombre de la propiedad.