Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.02.2023, 13:07
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

Вопрос для Инопланетной силы
Есть форма с select'ами и прочими полями:

<form action="#" id="calc">
<select name="price1" id="adults">
	<option value="0">Кол-во взрослых</option>
	<option value="250">2</option>
	<option value="500">3</option>
	<option value="750">4</option>
</select>

<select name="price2" id="kids">
	<option value="0">Кол-во детей</option>
	<option value="250">2</option>
	<option value="500">3</option>
	<option value="750">4</option>
</select>

<h2>Кол-во посещений:</h2>
<div class="check-radio">
  <input type="radio" name="price3" value="200">
  <label>1</label>
</div>

<div class="check-radio">
  <input type="radio" name="price3" value="400">
  <label>2</label>
</div>

Итого: на <font id="persons"></font> людей, <font id="visits"></font> посещений, будет стоить: <output name="o" for="a b c d e f g">0</output> рублей.
</form>


Задача:
Как вывести в "Итого" значения:
- сложенных названий option в id="persons"
- сложенных названий label в id="visits"
- сложенные value любых полей в id="cost"

Пока что есть скрипт для сложения всех value но в тег <output> хотелось бы с помощью <font id="cost"></font> выводить

в процессе: https://jsfiddle.net/Georka/b8ps3uh9/3/

Последний раз редактировалось WebMachine, 09.02.2023 в 13:42.
Ответить с цитированием
  #2 (permalink)  
Старый 09.02.2023, 14:53
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,744

Почему <font>? Чем <span> плох?

document.getElementById('persons').textContent = persons;

Что такое for="a b c d e f g"? В for должны быть id элементов от которых зависит выводимое значение. Но особого смысла это не имеет - это только подсказка для скриптов, по каким значениям считать. Но считать должен скрипт. Само считаться ничего не будет.
Ответить с цитированием
  #3 (permalink)  
Старый 09.02.2023, 15:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

WebMachine,
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script>
        window.addEventListener('DOMContentLoaded', function() {
            var form = document.querySelector('#calc'),
                output = form.querySelector('output');

            function total() {
                var mens_price = +adults.value;
                var children_price = +kids.value;
                var day_price = +form.querySelector('[name^="price"]:checked').value;
                var sum = mens_price + children_price + day_price;
                output.innerHTML = sum;
                var num = (+adults.selectedOptions[0].text || 0) + (+kids.selectedOptions[0].text || 0)
                persons.textContent = num;
                var day = form.querySelector('[name^="price"]:checked').nextElementSibling.textContent;
                visits.textContent = day;
            }
            form.addEventListener('change', total);
            form.addEventListener('input', total);
        });
    </script>
</head>

<body>
    <form action="#" id="calc">
        <select name="price1" id="adults">
    <option value="0">Кол-во взрослых</option>
    <option value="250">2</option>
    <option value="500">3</option>
    <option value="750">4</option>
</select>
        <select name="price2" id="kids">
    <option value="0">Кол-во детей</option>
    <option value="250">2</option>
    <option value="500">3</option>
    <option value="750">4</option>
</select>
        <h2>Кол-во посещений:</h2>
        <div class="check-radio">
            <input type="radio" name="price3" value="200" checked="checked">
            <label>1</label>
        </div>
        <div class="check-radio">
            <input type="radio" name="price3" value="400">
            <label>2</label>
        </div>
        <br> Итого: на
        <font id="persons"></font> людей,
        <font id="visits"></font> посещений, будет стоить: <output name="o" for="a b c d e f g">0</output> рублей.
    </form>
</body>

</html>
Ответить с цитированием
  #4 (permalink)  
Старый 09.02.2023, 15:09
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

Сообщение от рони Посмотреть сообщение
КОД
Всё просто идеально ) , только можно вместо output выводить итоговую сумму также с помощью id ?
Ответить с цитированием
  #5 (permalink)  
Старый 09.02.2023, 15:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от WebMachine
только можно вместо output выводить итоговую сумму также с помощью id ?
так добавьте id.
<!DOCTYPE html>
<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <style type="text/css">
    </style>
    <script>
        window.addEventListener('DOMContentLoaded', function() {
            var form = document.querySelector('#calc');

            function total() {
                var mens_price = +adults.value;
                var children_price = +kids.value;
                var day_price = +form.querySelector('[name^="price"]:checked').value;
                var sum = mens_price + children_price + day_price;
                all_price.innerHTML = sum;
                var num = (+adults.selectedOptions[0].text || 0) + (+kids.selectedOptions[0].text || 0)
                persons.textContent = num;
                var day = form.querySelector('[name^="price"]:checked').nextElementSibling.textContent;
                visits.textContent = day;
            }
            form.addEventListener('change', total);
            form.addEventListener('input', total);
        });
    </script>
</head>

<body>
    <form action="#" id="calc">
        <select name="price1" id="adults">
    <option value="0">Кол-во взрослых</option>
    <option value="250">2</option>
    <option value="500">3</option>
    <option value="750">4</option>
</select>
        <select name="price2" id="kids">
    <option value="0">Кол-во детей</option>
    <option value="250">2</option>
    <option value="500">3</option>
    <option value="750">4</option>
</select>
        <h2>Кол-во посещений:</h2>
        <div class="check-radio">
            <input type="radio" name="price3" value="200" checked="checked">
            <label>1</label>
        </div>
        <div class="check-radio">
            <input type="radio" name="price3" value="400">
            <label>2</label>
        </div>
        <br> Итого: на
        <font id="persons"></font> людей,
        <font id="visits"></font> посещений, будет стоить: <output name="o" for="a b c d e f g" id='all_price'>0</output> рублей.
    </form>
</body>

</html>
Ответить с цитированием
  #6 (permalink)  
Старый 09.02.2023, 20:11
Кандидат Javascript-наук
Отправить личное сообщение для WebMachine Посмотреть профиль Найти все сообщения от WebMachine
 
Регистрация: 11.10.2016
Сообщений: 141

Сообщение от рони Посмотреть сообщение
так добавьте id
Рони спасибо )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по скрипту для плавного появления текста Godser Общие вопросы Javascript 1 22.11.2013 23:49
Проблема с фазой перехвата в addEventListener, вопрос для профи kichSman Events/DOM/Window 1 05.02.2013 01:43
вопрос по алгоритму проверки (для игры) cyber Общие вопросы Javascript 10 11.11.2012 01:15
вопрос по модификации userjs для оперы Raz0r Opera, Safari и др. 0 25.03.2011 15:46
Вопрос для знатоков JavaScript prodis Общие вопросы Javascript 14 09.10.2008 00:31