К счастью, у этого упражнения красивое и описательное название.

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

Цель состоит в том, чтобы пользователь мог установить флажок, удерживать клавишу Shift и отметить другой, а также проверить все промежуточные значения.

Я был очень доволен, когда смог получить собственное решение, не заглядывая в ключ ответа.

Мой подход заключался в том, чтобы добавить прослушиватели событий для обработки нажатий клавиши Shift, а затем другие для каждого из флажков на «изменить», а затем некоторые условные операторы для обработки логики.

Пока это работало, это было немного грязно.

Что я узнал из ответа, так это то, что событие «щелчок» в этом довольно изящно. Он запускает событие Pointer при щелчке по флажку, который не только срабатывает, когда мы этого хотим, но и фактически имеет встроенный shiftKey = true || ложное свойство.

Это, безусловно, избавило код от нескольких лишних строк.

Мое решение по-прежнему немного отличалось от решения Уэса, и я им доволен, потому что оно было моим собственным.

Мое решение (разметка опущена, потому что это не имеет большого значения):

Решение Уэса (возможно, более элегантное, но временами отчасти более сложное для логического понимания):