Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 28.11.2023
Сообщений: 3

Рассчитать новую цену с учётом скидки в зависимости от введённого промокода.

28.11.2023, 19:39. Показов 1284. Ответов 6

Студворк — интернет-сервис помощи студентам
Всем день добрый!
Помогите пожалуйста с написанием небольшого скрипта
есть такой код

HTML5
1
2
<input id="input" type="text" maxlength="20" value="">
 <p class="summa">1200</p>
Мне нужно чтобы при вводе значения в поле с input.summa менялась в зависимости от введённого значения
  • NEWFRESH10 - Итоговая цена снижалась на 10%
  • NEWFRESH20 - Итоговая цена снижалась на 20%
  • NEWFRESH30 - Итоговая цена снижалась на 30%
А если промокод введён неверно - появлялось сообщение о том что он введен неверно.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.11.2023, 19:39
Ответы с готовыми решениями:

Рассчитать цену услуг в тренажерном зале с учётом скидки
В программе пользователем задаются следующие переменные (Console.ReadLine). Информация о покупателе: • Дата рождения (покупателя) ...

Вывести цену k-ой по счету книги с учетом скидки
Условие В честь наступающих праздников в книжном магазине &quot;Книголюб&quot; проходит акция – на часть ассортимента действует скидка 25%. ...

Определите среднюю цену с учетом скидки по каждому из 4-х поставщиков
Определите среднюю цену с учетом скидки по каждому из 4-х поставщиков. По каждой из 4-х категорий найдите товар с минимальным остатком. ...

6
 Аватар для NTHing
1782 / 963 / 388
Регистрация: 26.11.2014
Сообщений: 1,966
Записей в блоге: 1
28.11.2023, 20:40
Лучший ответ Сообщение было отмечено Consul108 как решение

Решение

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<input
            id="input"
            type="text"
            maxlength="20"
            placeholder="Введите промокод"
        />
        <p class="summa">1200</p>
        <p id="message"></p>
        <script>
            document.getElementById("input").addEventListener("change", function () {
                summa = document.querySelector(".summa");
                inputValue = this.value.toUpperCase();
                message = document.getElementById("message");
                currentSum = +summa.textContent;
 
                if (
                    inputValue === "NEWFRESH10" ||
                    inputValue === "NEWFRESH20" ||
                    inputValue === "NEWFRESH30"
                ) {
                    discount = parseInt(inputValue.slice(-2));
                    discountedSum = currentSum - currentSum * (discount / 100);
                    message.textContent = `итоговая цена ${discountedSum}`;
                } else {
                    summa.textContent = "1200";
                    message.textContent = "Промокод введен неверно";
                }
            });
        </script>
2
Молодой техлид)
Эксперт JSЭксперт HTML/CSS
 Аватар для mr_dramm
1818 / 1056 / 329
Регистрация: 17.07.2021
Сообщений: 2,147
Записей в блоге: 14
28.11.2023, 22:28
Цитата Сообщение от NTHing Посмотреть сообщение
inputValue === "NEWFRESH10" ||
                    inputValue === "NEWFRESH20" ||
                    inputValue === "NEWFRESH30"
фантазии на тему как это еще можно сделать

JavaScript
1
const dict = {"NEWFRESH10": 10, "NEWFRESH20": 20, "NEWFRESH30": 30}
это даст больше свободы в выборе промокода и сократит код

JavaScript
1
2
3
4
5
6
7
8
                if (dict[inputValue]) {
                    discount = dict[inputValue];
                    discountedSum = currentSum - currentSum * (discount / 100);
                    message.textContent = `итоговая цена ${discountedSum}`;
                } else {
                    summa.textContent = "1200";
                    message.textContent = "Промокод введен неверно";
                }
Еще можно вынести логику работы с промокодом и другими возможными изменениями в цене во внешнюю логику, например через паттерн визитор, а этой функции оставить функционал только вывода цены в нужно место документа.
1
0 / 0 / 0
Регистрация: 28.11.2023
Сообщений: 3
29.11.2023, 10:28  [ТС]
Спасибо огромное!
Позвольте уточнить 2 момента
1) Как сделать так - чтобы цена со скидкой показывалась не отдельным сообщением, а менялась непосредственно в самой сумме - там где 1200
2) Как сделать чтобы Сумма менялась автоматически при вводе в инпут - без нажатия на Enter?

PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<input
            id="input"
            type="text"
            maxlength="20"
            placeholder="Введите промокод"
        />
        <p class="summa">1200</p>
        <p id="message"></p>
        <script>
            document.getElementById("input").addEventListener("change", function () {
                summa = document.querySelector(".summa");
                inputValue = this.value.toUpperCase();
                message = document.getElementById("message");
                currentSum = +summa.textContent;
 
                if (
                    inputValue === "NEWFRESH10" ||
                    inputValue === "NEWFRESH20" ||
                    inputValue === "NEWFRESH30"
                ) {
                    discount = parseInt(inputValue.slice(-2));
                    discountedSum = currentSum - currentSum * (discount / 100);
                    message.textContent = `итоговая цена ${discountedSum}`;
                } else {
                    summa.textContent = "1200";
                    message.textContent = "Промокод введен неверно";
                }
            });
        </script>

Спасибо ещё раз!
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3844 / 1703 / 431
Регистрация: 14.03.2022
Сообщений: 4,342
29.11.2023, 10:49
Цитата Сообщение от Consul108 Посмотреть сообщение
Как сделать чтобы Сумма менялась автоматически при вводе в инпут - без нажатия на Enter?
Тут бы нужно как-то понять что ввод промокода завершен...
У тебя есть такой критерий?

Добавлено через 4 минуты
Цитата Сообщение от Consul108 Посмотреть сообщение
Как сделать так - чтобы цена со скидкой показывалась не отдельным сообщением, а менялась непосредственно в самой сумме - там где 1200
Наверное тебе пора уже начать читать букварь...
Шпаргалка по JS-методам для работы с DOM
1
0 / 0 / 0
Регистрация: 28.11.2023
Сообщений: 3
29.11.2023, 10:53  [ТС]
Тут бы нужно как-то понять что ввод промокода завершен... - в задумке я хотел чтобы скрипт работал когда курсор боьше не в инпуте.

Наверное тебе пора уже начать читать букварь... - Букварь читаю активно! И даже уже нашёл как это сделать!
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3844 / 1703 / 431
Регистрация: 14.03.2022
Сообщений: 4,342
29.11.2023, 11:16
Цитата Сообщение от Consul108 Посмотреть сообщение
Букварь читаю активно! И даже уже нашёл как это сделать!
Молодец...

Цитата Сообщение от Consul108 Посмотреть сообщение
в задумке я хотел чтобы скрипт работал когда курсор боьше не в инпуте
Ну это так себе решение...
Но можешь попробовать. Есть такое событие - потеря фокуса blur. Оно подойдет к твоей задумке.
https://learn.javascript.ru/focus-blur
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.11.2023, 11:16
Помогаю со студенческими работами здесь

Рассчитать стоимость покупки с учетом скидки
Курсач в понедельник сдать нужно, а я никак задание не доделаю . Покупатели магазина пользуются 10% скидкой, если покупка состоит...

Рассчитать стоимость покупки с учетом скидки
Написать программу вычисления стоимости покупки с учетом скидки. Скидка в 3% предоставляется, если сумма покупки больше 500 руб, в 5% —...

Рассчитать стоимость продуктов с учетом скидки
Задача. Рассчитайте стоимость продукции с учетом скидки. Результаты округлите до 2-х знаков после запятой Формулы для расчетов: Процент...

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

Рассчитать размер скидки в зависимости от возраста
Здравствуйте. Не получается задача: class Die: def __init__(self, username, price, age): self.username = username...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru