Преамбула
Есть симулятор установки с кнопками, переключателями. Необходимо сделать программу, позволяющая имитировать определенные последовательности нажатия кнопок и переключения переключателей.
Последовательность изменения состояний переключателей известна, ограничена (в среднем 7-10 итераций). Количество упражнений (последовательностей) также ограничено.
Фабула
Упражнение считается выполненным, если переключаители были настроены в определенном порядке на соответствующие позиции. Текущая позиция переключателя и правильная позиция записываются в атрибуты html-тега: status и pass соответственно.
Ниже представлен код, описывающий последовательную установку определенных контролов в правильные состояния:
$('#control1').click(function() {<br>
if ( $('#control1').attr('status') == $('#control1').attr('pass') ) {<br>
$('#control2').click(function() {<br>
if ( $('#control2').attr('status') == $('#control2').attr('pass') ) {<br>
$('#control10').click(function() {<br>
if ( $('#control10').attr('status') == $('#control10').attr('pass') ) {<br>
$('#control1').click(function() {<br>
if ( $('#control1').attr('status') == 3 ) {<br>
$('#control9').click(function() {<br>
if ( $('#control9').attr('status') == $('#control9').attr('pass') ) {<br>
alert('Упражнение выполнено верно');<br>
} // end if // control9<br>
});<br>
} // end if // control1 == 3<br>
});<br>
} // end if // control10<br>
});<br>
} // end if // control2<br>
});<br>
} // end if // control1<br>
});<br>
Вопрос
Каким образом можно упростить подобную лесенку до вида простой последовательности нужных айдишников кнопок, и в случае если status должен быть отличным от pass (повторное изменение какого-то контрола за одно упражнеие), можно было подставить свое значение.
Например, верхние спагетти приобрели бы вид:
megaFunction(#control1, #control2, #control10, #control1 == 3, #control9, 'Упражнение выполнено');<br>