Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Суммирование чисел (https://javascript.ru/forum/dom-window/63027-summirovanie-chisel.html)

Янковиц 13.05.2016 09:27

Суммирование чисел
 
Добрый день. У меня на странице есть вот такой html код:
<div class="summa"></div>
<div class="product1">
<div class="price">100</div>
<a data-id="633" class="buy-now" onclick="return cart.add(this)">Купить</a>
</div>
<div class="product2">
<div class="price">200</div>
<a data-id="632" class="buy-now" onclick="return cart.add(this)">Купить</a>
</div>
Мне необходимо, чтобы при клике на гипперссылку в блок summa выходило число из блока price. Подскажите пожалуйста, кто делал подобное. В блоке summa может быть ничего или любое число.

Dilettante_Pro 13.05.2016 10:37

Янковиц,
<div class="summa"></div>
<div class="product1">
<div class="price">100</div>
<a data-id="633" class="buy-now" onclick="add(this)">Купить</a>
</div>
<div class="product2">
<div class="price">200</div>
<a data-id="632" class="buy-now" onclick="add(this)">Купить</a>
</div>
<script>
function add(elem) {
    document.getElementsByClassName('summa')[0].innerHTML =  elem.parentElement.getElementsByClassName('price')[0].innerHTML;
}
</script>

Только странно: ни выбора продуктов, ни количеств... Голое число, неизвестно к чему относящееся
И где же суммирование?
Цитата:

при клике на гипперссылку в блок summa выходило число из блока price

Янковиц 13.05.2016 10:40

Это лишь часть кода. Количество и т.д. все уже работает. Осталась только корзина. Здорово, но немного не то. Нужно, чтобы суммировались числа. Кликнул по одной(+100), добавляет в блок summa 100, кликнул по другой (+200), стало в блоке summa 300. И так далее. Извините если неясно выразился.

Dilettante_Pro 13.05.2016 11:03

<div class="summa"></div>
<div class="product1">
<div class="price">100</div>
<a data-id="633" class="buy-now" onclick="add(this)">Купить</a>
</div>
<div class="product2">
<div class="price">200</div>
<a data-id="632" class="buy-now" onclick="add(this)">Купить</a>
</div>
<script>
    function add(elem) {
        var res = document.getElementsByClassName('summa')[0],
            price = parseInt(elem.parentElement.getElementsByClassName('price')[0].innerHTML),
            sum = parseInt(res.innerHTML) | 0;
        res.innerHTML = sum + price;
          }
</script>

Янковиц 13.05.2016 11:05

:dance: :thanks:

laimas 13.05.2016 11:39

<a data-id="632" class="buy-now" data-price="XXX" onclick="return cart.add(this)">Купить</a>

Зачем тревожить другие элементы, если в функцию передается this, которое и само с успехом может хранить цену.

Dilettante_Pro 13.05.2016 11:58

laimas,
В этом коде и все остальное не имеет особого смысла, так что...

laimas 13.05.2016 13:43

Цитата:

Сообщение от Dilettante_Pro
В этом коде и все остальное не имеет особого смысла

Да это я торговцу адресовал, а имеет, не имеет, это уже его головная боль. )

Янковиц 13.05.2016 16:08

Вот так работает:
<a data-id="632" class="buy-now" data-price="XXX" onclick="add(this)">Купить</a>
а так нет
<a data-id="632" class="buy-now" data-price="XXX" onclick="return cart.add(this)">Купить</a>
А в чем разница?
И если data-price="XXX" лучше, как это реализовать?

laimas 13.05.2016 18:05

Зачем вот это data-id="632"? Уж точно это ID товара и используется в скрипте, точно также атрибутом data-price можно передавать с скрипт и цену товара.


Часовой пояс GMT +3, время: 21:54.