С Новым годом всех! Пусть ваш новый год будет наполнен значимой работой и поменьше потраченного времени.

Недавно в моей школе всех учителей заставили заполнить анкету удовлетворенности учащихся. Каждая анкета заполнена примерно 26 вопросами с несколькими вариантами ответов, оценивая учителя на основе определенного параметра и отвечая, щелкнув переключатель, который будет оценивать учителя по спектру от всегда до никогда.

Единственная проблема заключается в том, что это повторяется и утомительно. Предметов около 13, а это значит, что мне пришлось бы оценивать 13 разных учителей, не говоря уже о предметах с двумя разными учителями. При этом необходимо ответить примерно на 330 вопросов. И, конечно же, учителя почти никогда не будут использовать эти данные всерьез. Что произойдет, так это то, что они прочитают результат круговой диаграммы и кивнут в знак согласия без каких-либо серьезных средств, чтобы изменить свое отношение.

Подобные опросы неэффективны, потому что это не прямая критика. Они не слышат напрямую от студентов о том, что не так с их методами обучения. Учащиеся, которые критикуют своего учителя прямо у них на глазах, гарантированно окажут большее влияние, чем цветная круговая диаграмма, показывающая, чего не хватает учителю.

Достаточно психологии. Я пытаюсь сделать алгоритм, который автоматизирует процесс ответа. Этот алгоритм будет случайным образом проверять переключатели и сразу переходить на следующую страницу. Алгоритм будет проходить через JavaScript-терминал Chrome.

Сначала я попытался открыть исходный код страницы веб-сайта. Однако это приводит к странице «Подтвердить повторную отправку формы», что означает, что я не могу получить доступ к исходному коду. Далее я просмотрел элемент страницы, который привел меня к HTML-коду веб-сайта.

Следующая часть потребовала от меня немного тщательности. Я проверил каждый тег ‹div› и нашел тег вопроса. Найдя теги ‹div› с идентификатором вопроса, я попытался найти идентификатор каждого переключателя.

После просмотра идентификатора переключателя я заметил несколько закономерностей. Вот первый и последний код раздела вопросов A:

answer181912X966X27311A2
answer181912X966X27320A1

Из id видно, что есть независимая или неизменяемая часть кода, которая называется «answer181912X966X273». После этого идет зависимая или изменяющаяся часть кода, то есть 11 и 20. Этот код зависит от вопроса, в котором он находится. Первый вопрос — 11, а последний вопрос — 29, что точно отличается на 19 (число вопросов в разделе А).

Прохождение раздела B вопроса дает результат, аналогичный разделу A, где первый и последний идентификатор раздела вопроса B:

answer181912X966X27331A1 
answer181912X966X27336A1

То же, что и раздел А, там такая же независимая часть кода. Однако номер вопроса внезапно перескочил на 31 и закончился на 36. Чтобы это исправить, все, что мне нужно было сделать, это изменить параметры кода.

Раздел C состоит только из одного вопроса, поэтому все, что мне нужно было, это установить соответствующие параметры.

Последняя часть кода, A1, является конкретным именем переключателя. В опросе «Селалу» — это А1, «Серинг» — это А2 и т. д.

Подводя итог, часть идентификатора:

answer181912X966X273 + номер вопроса + A + выбор переключателя

Имея это в виду, все, что мне нужно было сделать, это сделать оператор for, который будет перебирать количество вопросов и рандомизировать выбранный переключатель. Для этого я использовал оператор for, который определяет ответ для каждого числа. Для раздела A я начал переменную с 11 и закончил ее с 29:

for(var i = 11; i <= 29; i++){
question_answer = Math.floor(Math.random()*5) + 1;
output = "answer181912X966X273" + i + "A" + question_answer;
document.getElementById(output).checked = true
}

document.getElementById(output).checked = true — это специальная функция JavaScript, которая получает элемент HTML из идентификатора, где checked — это свойство указанного элемента (переключатель), и превращает значение этого свойства в true (отмечено).

Я изменил параметры для раздела B и раздела C, оставив кодовый блок прежним.

Последняя часть кода заключалась в отправке формы и переходе к следующему вопросу. Этого можно добиться, написав document.getElementById('movenextbtn').click();

Однако, хотя это сработало для этой части вопроса, для других учителей это не сработает, потому что когда-то независимый код оказался зависимым от учителя. Итак, мне нужно найти обходной путь для алгоритма…