Упростил свою задачу по-максимуму, но преобразовать в массив так и не получается:
http://med-75.hol.es/1/8.html :
<html>
<meta charset="utf-8">
<head>
<script type="text/javascript">
function calculator(form) {
var e1 = form.e1.value;
var e2 = form.e2.value;
var e3 = form.e3.value;
switch (e1)
{
case "ab" : a1=1 , b1=1 , c1=""; break;
case "ac" : a1=1 , b1="" , c1=1; break;
case "bc" : a1="" , b1=1 , c1=1; break;
default: a1="" , b1="" , c1="";
}
switch (e2)
{
case "ab" : a2=1 , b2=1 , c2=""; break;
case "ac" : a2=1 , b2="" , c2=1; break;
case "bc" : a2="" , b2=1 , c2=1; break;
default: a2="" , b2="" , c2="";
}
switch (e3)
{
case "ab" : a3=1 , b3=1 , c3=""; break;
case "ac" : a3=1 , b3="" , c3=1; break;
case "bc" : a3="" , b3=1 , c3=1; break;
default: a3="" , b3="" , c3="";
}
form.a1.value = a1;
form.a2.value = a2;
form.a3.value = a3;
form.b1.value = b1;
form.b2.value = b2;
form.b3.value = b3;
form.c1.value = c1;
form.c2.value = c2;
form.c3.value = c3;
}
</script>
</head>
<style type="text/css">
.s1 {
text-align: center;
font-weight: bold;
width: 100px;
}
</style>
<form name="f1">
<select name="e1" class="s1">
<option>ab</option>
<option>ac</option>
<option>bc</option>
</select>
<select name="e2" class="s1">
<option>ab</option>
<option>ac</option>
<option>bc</option>
</select>
<select name="e3" class="s1">
<option>ab</option>
<option>ac</option>
<option>bc</option>
</select>
<br>
<input name="a1" type="text" class="s1"> <input name="a2" type="text" class="s1"> <input name="a3" type="text" class="s1">
<br>
<input name="b1" type="text" class="s1"> <input name="b2" type="text" class="s1"> <input name="b3" type="text" class="s1">
<br>
<input name="c1" type="text" class="s1"> <input name="c2" type="text" class="s1"> <input name="c3" type="text" class="s1">
<br><br>
<input type="button" value="Калькуляция" onClick="calculator(this.form)">
<input type="reset" value="Сброс">
</form>
</html>
В идеале вместо трёх switch-ей должен быть один – например, такой:
switch (e[i])
{
case "ab" : a[i]=1 , b[i]=1 , c[i]=""; break;
case "ac" : a[i]=1 , b[i]="" , c[i]=1; break;
case "bc" : a[i]="" , b[i]=1 , c[i]=1; break;
default: a[i]="" , b[i]="" , c[i]="";
}
Но опять же встаёт вопрос, как грамотно заполнить массивы для переменных e, a, b, c и создать для них соответствующий цикл.