Применяются те же принципы.
Вашей точкой входа в программу будет какая-то функция, которая привязана к какому-либо событию, которое все запускает. Обычно это будет функция загрузки страницы.
В этой функции вы будете настраивать программу (как вы бы это делали в основной части C ++), создавать переменные (глобальные или иные), представляющие состояние программы и т. Д. Я думаю, у вас будет некоторая логика, которая выбирает и представляет вопрос плюс, возможно, кнопка «ОК», которую пользователь должен нажать, когда он доволен своим пользователем. На данный момент браузер просто ожидает ввода пользователя, пользователь выбирает свой ответ и нажимает ОК. Логика вашей программы, вероятно, хранить где-то ответ в переменной и вычислять следующий вопрос для отображения. Для этого вы добавили функцию в обработчик событий onclick, которая реализует эту логику. Вы задаете следующий вопрос и вуаля, вы снова в начале цикла.
Я бы рекомендовал заставить работать простой аспект цикла, чтобы освоиться с javascript и моделью событий, а не беспокоиться о том, являются ли глобальные переменные плохими или нет. В любом случае у вас будет хотя бы одна глобальная переменная, вероятно, ссылка на более сложный объект ApplicationState.
Я не уверен, является ли это частью вашего замешательства, но вы знаете, что вместо:
button.onclick = new function() { // loads of program code to get next question };
вы можете сделать
function NextQuestion() {
// code to get next question
}
button.onclick = NextQuestion;