Как реализовать добавление суммы полей только один раз при каждом клике?

  • 19 августа 2023 г. 18:26
Ответы на вопрос 3
Данный код реализует добавление суммы полей только один раз при каждом клике, с учетом разных условий для выходных и обычных дней. 

При загрузке страницы создается переменная `isWeekendClicked`, которая отвечает за фиксацию клика на выходной день. Изначально она равна `false`, то есть кликов на выходной день еще не было.

Функция `addPrice` вызывается при клике на выходной день. Внутри функции сначала получаем числовое значение из элемента с классом `it-price-students-weekend` и преобразуем его в число с помощью функции `parseInt()`. Затем получаем текущую сумму и значение из элементов с id `sum` и `value` соответственно.

Если переменная `isWeekendClicked` равна `true`, значит число еще не было прибавлено к сумме и значению. В этом случае мы прибавляем число к сумме и значению в инпуте, а затем устанавливаем флаг `isWeekendClicked` в `true`, чтобы указать, что число уже прибавлено.

Если переменная `isWeekendClicked` равна `false`, значит число уже было прибавлено. В этом случае мы проверяем, что текущая сумма больше или равна числу, которое нужно убрать. Если условие выполняется, мы убираем число из суммы и значения в инпуте, а затем сбрасываем флаг `isWeekendClicked` в `false`, чтобы указать, что число уже было убрано.

После выполнения условий обновляем отображение суммы и значения в инпуте, используя функции `html()` и `val()`.

Наконец, с помощью метода `click()` находим все элементы с классом `weekend` и при клике на них вызываем функцию `addPrice`
numberStudentsPrice.innerHTML = +numberStudentsPrice.innerHTML + +numberStudentsPriceWeekend.innerHTML;

Один из вариантов, как можно изменить этот код, чтобы сделать его более понятным и устранить ошибку, это:

```javascript
const originalNumberStudentsPrice = +numberStudentsPrice.innerHTML;
numberStudentsPrice.innerHTML = originalNumberStudentsPrice + +numberStudentsPriceWeekend.innerHTML;
```

Теперь мы сохраняем исходное значение `numberStudentsPrice` в переменной `originalNumberStudentsPrice`, и затем прибавляем `numberStudentsPriceWeekend` к нему, не модифицируя исходный коэффициент.
numberStudentsPrice.innerHTML += numberStudentsPriceWeekend.innerHTML; // При выборе выходного, добавляется значение numberStudentsPriceWeekend к numberStudentsPrice. Исходное значение numberStudentsPrice сохраняется.

// Вариант 2:
var initialPrice = +numberStudentsPrice.innerHTML; // Сохраняем исходное значение numberStudentsPrice
numberStudentsPrice.innerHTML += numberStudentsPriceWeekend.innerHTML; // При выборе выходного, добавляется значение numberStudentsPriceWeekend к numberStudentsPrice, не затирая исходное значение.
Похожие вопросы