Всех приветствую, поставил на сайт скрипт корзины на JS, вот этот http://www.webmasters.by/articles/review-po/3477-wicart.html , разобрался со всеми товарами, теперь загвоздка, мне нужно передать в яндекс платёжку сумму из корзины, соответственно надо вставить в форму общую стоимость, но я не понимаю как этого сделать, какая переменная отвечает за вывод общей стоимости в корзине? И как её вставить в эту строку HTML: <input type="hidden" name="sum" value="4568.25" data-type="number"> , где "4568,26" и есть стоимость, помогите пожалуйста, время не ждёт
@epog333, PHP тут причем? --- Добавлено --- И что за древность! Вы реально собрались хардкодить товары на странице? Код (Javascript): var priceList = { "001" : {"id" : "001", "subid" : {}, "name" : "IPhone 5", "price" : "20500"}, "002" : {"id" : "002", "subid" : {}, "name" : "IPad MINI", "price" : "10500"} };
Это никак не связано. Вы можете сформировать список на странице тем же пыхом или принять список отдельным запросом. --- Добавлено --- Или отправить общую стоимость на обработку пыхом. Т.е. если хардкодить, то все передается? Тогда в чем вопрос?
Ничего не передается, мне нужно из скрипта JS вытащить число, которое запихнуть в переменную PHP либо напрямую передать, я не могу догнать как это сделать
Не могу разобраться как это сделать, весь день перед монитором просидел, ну совсем не разбираюсь в js
Пишите в соотв. разделе с примерами кода и т.п. Может, и получите ответ. Но учтите, что это форум прежде всего для PHP-программистов.
Теоретически... Код (Javascript): document.querySelector("input[name='sum']").value = Object.values(priceList).map(item => item.price).reduce((a, b) => parseInt(a) + parseInt(b), 0)
что именно не выходит? у тебя всегда есть console.log() что б посмотреть результат priceList я не вникал где берется но тебе нужно его подставить. Если к нему нету доступа тогда ищи скорее всего в localStorage
Я с JS не сталкивался вообще никогда в жизни, поэтому это тёмный лес для меня, я думал строку которую ты выдал можно просто вставить вот так Код (Text): <input type="hidden" name="sum" value=" <script> document.querySelector("input[name='sum']").value = Object.values(priceList).map(item => item.price).reduce((a, b) => parseInt(a) + parseInt(b), 0); </script>" data-type="number"> по аналогии с php
Стоп.... Это как ты так умудрился?) Притом script должен быть в самом низу после инициализации priceList и input HTML: <input type="hidden" name="sum" value="" data-type="number"> <script> document.querySelector("input[name='sum']").value = Object.values(priceList).map(item => item.price).reduce((a, b) => parseInt(a) + parseInt(b), 0); </script>"
Ну я просто говорю что вообще не понимаю как работает JS, я думал как в php просто echo $name ставишь между скобками и всё, твой код начал работать и передавать сумму на яндекс, только вот не ту, не могу понять почему, должно передаваться 340, а передается 8879
Код (Text): <script> var priceList = { "001" : {"id" : "001", "subid" : {}, "name" : "Пицца ЧЕТЫРЕ СЕЗОНА", "price" : "340"}, "002" : {"id" : "002", "subid" : {}, "name" : "Пицца ЧЕТЫРЕ СЫРА ", "price" : "340"}, "003" : {"id" : "003", "subid" : {}, "name" : "Пицца БАРБЕКЮ ПО-БОЛГАРСКИ ", "price" : "390"}, "004" : {"id" : "004", "subid" : {}, "name" : "Пицца ЧЁРНАЯ ЖЕМЧУЖИНА ", "price" : "549"}, "005" : {"id" : "005", "subid" : {}, "name" : "Пицца ЧИКЕН ЧИЗ ", "price" : "390"}, "006" : {"id" : "006", "subid" : {}, "name" : "Пицца ЦЫПЛЁНОК БАРБЕКЮ ", "price" : "440"}, "007" : {"id" : "007", "subid" : {}, "name" : "Пицца ДЕРЕВЕНСКАЯ ", "price" : "440"}, "008" : {"id" : "008", "subid" : {}, "name" : "Пицца МАРГАРИТА ", "price" : "350"}, "009" : {"id" : "009", "subid" : {}, "name" : "Пицца ДЖУЛЬЕТА ", "price" : "440"}, "010" : {"id" : "010", "subid" : {}, "name" : "Пицца ФРУКТОПИЦЦА ", "price" : "440"}, "011" : {"id" : "011", "subid" : {}, "name" : "Пицца ГАВАЙСКАЯ ", "price" : "440"}, "012" : {"id" : "012", "subid" : {}, "name" : "Пицца ГОВЯДИНА ЧИЛИ ", "price" : "440"}, "013" : {"id" : "013", "subid" : {}, "name" : "Пицца КУРИЦА ПО-ДИЖОНСКИ ", "price" : "390"}, "014" : {"id" : "014", "subid" : {}, "name" : "Пицца ГРИБОЕДОВ ", "price" : "440"}, "015" : {"id" : "015", "subid" : {}, "name" : "Пицца МИСТЕР ЧЕРРИ ", "price" : "390"}, "016" : {"id" : "016", "subid" : {}, "name" : "Пицца МЯСНАЯ ", "price" : "410"}, "017" : {"id" : "017", "subid" : {}, "name" : "Пицца ОХОТНИЧЬЯ ", "price" : "440"}, "018" : {"id" : "018", "subid" : {}, "name" : "Пицца ПЕППЕРОНИ ", "price" : "490"}, "019" : {"id" : "019", "subid" : {}, "name" : "Пицца ПРОВАНСКАЯ ", "price" : "390"}, "020" : {"id" : "020", "subid" : {}, "name" : "Пицца СИЦИЛИЯ ", "price" : "490"}, "021" : {"id" : "021", "subid" : {}, "name" : "Пицца С ТЕЛЯТИНОЙ И БРЫНЗОЙ ", "price" : "440"}, }; </script> <script> var cart; var config; var wiNumInputPrefID; $(document).ready(function(){ cart = new WICard("cart"); cart.init("basketwidjet", config); }); document.addEventListener('visibilitychange', function(e) { cart.init("basketwidjet", config); }, false); </script> <style> a { color: #f95428; text-decoration:none; } a:hover { border-bottom: 1px dashed #f95428; } </style> <table style="width: 1000px; background-color: #333333; height: 33px; color: #fffdf2;"> <tr> <td style="padding: 6px;"> <div> <span>Корзина: </span> <a href="#" onclick="cart.clearBasket()" style="float: right;">Очистить корзину</a> <a href="#" id="basketwidjet" onclick="cart.showWinow('bcontainer', 1)"></a> <span style="font: normal 11px Arial"></span> </div> </td> </tr> </table> <div id="order" class="popup"> <a href="#" onclick="cart.closeWindow('order', 0)" style="float:right"><img src="img/close.png" /></a> <h4>Введите ваши контактные данные</h4></p> <p><form id="formToSend" method="POST" action="https://money.yandex.ru/quickpay/confirm.xml"> <input id="fio" type="text" placeholder="Ваши фамилия и имя" class="" /> <input id="adres" type="text" placeholder="Адрес (улица, дом, квартира)" class=""/> <input id="phone" type="text" placeholder="Контактный телефон" class=""/> <input id="repost" type="text" placeholder="Ссылка на репост записи ВК" class="" /> <input id="comment" type="text" placeholder="Комментарий к заказу" class="" /> <input type="hidden" name="receiver" value="410016385345425"> <input type="hidden" name="quickpay-form" value="shop"> <input type="hidden" name="targets" value="Оплата заказа №381"> <input type="radio" name="paymentType" value="AC"> <input type="hidden" name="sum" value="" data-type="number"> <script> document.querySelector("input[name='sum']").value = Object.values(priceList).map(item => item.price).reduce((a, b) => parseInt(a) + parseInt(b), 0); </script> <input type="submit" value="Отправить"> </form> </div> <div align="center"> <table style="width:800px;font-family: Tahoma;border-spacing: 15px 10px;"> <tr> <td style="width: 290px;"> <img src="/pizza/4sezona.png"/> <table style="width: 290px;"><tr><td style="font-weight: bold;">ЧЕТЫРЕ СЕЗОНА</td><td style="color: #ce1208; font-weight: bold;">340₽</td></tr><tr> <td style="font-size: 11px;"><b>510 гр</b> 257,57 ккал/100 гр</td></tr><tr> <td>Ветчина, грибы шампиньоны, перец болгарский, помидор, сыр моцарелла, соус майонезный. К пицце подается фирменный томатный соус.</td> <tr><td> <button style= "background: #fffdf2; border: 0px;" id="wicartbutton_001" onclick="cart.addToCart(this, '001', priceList['001'])"><img src="/img/buy.png"/></button> </td></tr> </tr></table> </td> </body> </html>
@epog333 Ну видимо priceList это каталог а не выбранные товары. Ищи где товары. Зато теперь знаешь общую стоимость всей продукции 8879) Ну и еще parseInt на parseFloat заменить не помешает
Код (Javascript): document.getElementById('bfooter').onclick = event => document.querySelector("input[name='sum']").value = parseInt(document.getElementById("bsum").innerText)
@epog333 Это потому что у тебя bfooter генерируется динамически соответсвенно вешать нужно так... https://stackoverflow.com/questions/34896106/attach-event-to-dynamic-elements-in-javascript