Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   ввести переменную и сделать ее вывод. (https://javascript.ru/forum/jquery/63635-vvesti-peremennuyu-i-sdelat-ee-vyvod.html)

Meattale 19.06.2016 17:35

ввести переменную и сделать ее вывод.
 
Вложений: 1
Доброго времени суток! Не так давно передо мной встала задача реализовать простенькую корзину для сайта. Так как знаний в jQ не много - решил взять готовое решение и окончательно запутался. Путаница заключается в том, что есть список заказов в корзине:

тут не хватает двух полей, а то есть переменных: НДС % и сумма НДС руб. + ко всему в поле всего должно быть еще + сумма ндс. Не могу разобраться, как ввести переменную и сделать вывод, пожалуйста, помогите!
Один момент:
Товары на сайт выводятся переменной:
<script>
var priceList = {
	"001" : {"id" : "001", "subid" : {}, "name" : "Имя товара", "subname" : {}, "price" : "100"},
	"002" : {"id" : "002", "subid" : {}, "name" : "Имя товара", "subname" : {}, "price" : "200"}
	};
</script>


хотелось бы сделать вывод переменной ндс таким образом, чтобы для каждого товара переменная, к примеру nds устанавливалась в данной строке, так же, как и прайс.
Сам скрипт в прикрепленном файле.
Помогите, пожалуйста!:help: :help:

laimas 19.06.2016 18:04

Цитата:

Сообщение от Meattale
Товары на сайт выводятся переменной

Для корзины, это приемлемо, а вот для вывода товаров на страницах сомнительно, роботы не исполняют скрипт, а значит и содержание такой страницы не индексируется.

Meattale 19.06.2016 18:08

Цитата:

Сообщение от laimas (Сообщение 419917)
Для корзины, это приемлемо, а вот для вывода товаров на страницах сомнительно, роботы не исполняют скрипт, а значит и содержание такой страницы не индексируется.

А там индексировать совершенно нечего.

Просто кнопка покупки, которая совершенно не привязана к товару. Все в мануал режиме набивается.

laimas 19.06.2016 18:19

Ну если так "наплевательски" относиться к содержанию, то дело хозяйское. Но объект с параметрами товаров не сам же на странице появляется, его же сервер отдает, поэтому добавляйте нужное:

"001" : {"id" : "001", "subid" : {}, "name" : "Имя товара", "subname" : {}, "price" : "100", "nds" : 999}

Meattale 19.06.2016 18:28

Цитата:

Сообщение от laimas (Сообщение 419921)
Ну если так "наплевательски" относиться к содержанию, то дело хозяйское. Но объект с параметрами товаров не сам же на странице появляется, его же сервер отдает, поэтому добавляйте нужное:

"001" : {"id" : "001", "subid" : {}, "name" : "Имя товара", "subname" : {}, "price" : "100", "nds" : 999}

Сам каталог прописан статически в html,а скрипт добавляет только форму корзины + расчет (математику).
Добавить нужное в строку вывода - это хорошо, а как эту переменную вписать в сам скрипт + привязать на него расчет - мне не совсем понятно. Сам скрипт прикреплен.
Схема такова: Берем 'nds',например, 18%, переводим его в сумму от цены и ее прибавляем к конечной, как завязать именно этот расчет в скрипте - я увы не знаю

laimas 19.06.2016 18:46

Если это статические файлы, а НДС для отображения цены с НДС, то что вам мешает сразу прописать уже рассчитанное в объект? Или проблема узнать сколько будет 18% от цены?

А получить точно также как и получаем все остальное. В скрипте прилагаемом вообще описана только работа с корзиной, данные которой хранятся в локальном хранилище, Каким образом они туда попадают вопрос к вам. То есть чтобы их поместить в описанный выше объект (это похоже и есть формат хранения корзины), сервер эти данные должен передать клиенту (НДС).

А получать, смотрите функцию renderBasketTable - local.name, local.price и т.д., будет в хранилище nds, значит local.nds.

localStorage - это сам объект локального хранилища.

Meattale 19.06.2016 19:03

Цитата:

Сообщение от laimas (Сообщение 419923)
Если это статические файлы, а НДС для отображения цены с НДС, то что вам мешает сразу прописать уже рассчитанное в объект? Или проблема узнать сколько будет 18% от цены?

А получить точно также как и получаем все остальное. В скрипте прилагаемом вообще описана только работа с корзиной, данные которой хранятся в локальном хранилище, Каким образом они туда попадают вопрос к вам. То есть чтобы их поместить в описанный выше объект (это похоже и есть формат хранения корзины), сервер эти данные должен передать клиенту (НДС).

А получать, смотрите функцию renderBasketTable - local.name, local.price и т.д., будет в хранилище nds, значит local.nds.

localStorage - это сам объект локального хранилища.

Копнул еще раз скрипт:
Прописал константу
var local = 	{
			"basket_is_empty" : "Корзина пуста", 
			"name" : "Название",
			"price" : "Цена",
			"all" : "Всего",
			"order" : "Оформить заказ",
			"basket" : "корзина",
			"num" : "кол-во",
			"send" : "Спасибо за покупку!\nМы свяжемся с Вами в ближайшее время",
			"goods" : "Товаров",
			"amount" : "на сумму"
                        "nds" : "Ставка НДС"
                        "ndsamount" : "Сумма ндс НДС"
			};

Это чисто lable присвоил.
Далее:
var goodieLine = {"id" : id_, "name" : name_,  "nds": nds,  "ndsamount": ndsamount, "price": price, "num" : kol, "url" : document.location.href, "photo" : ""};

Написал атрибут для добавления в строку товара.

this.reCalc = function()
		{
		var num = 0;
		var sum = 0; 
		var nds = 0;
		var ndsamount = 0;	
		for(var idkey in this.DATA) 
			{
			num += parseInt(this.DATA[idkey].num);
			sum += parseFloat(parseInt(this.DATA[idkey].num) * parseFloat(this.DATA[idkey].price));
			}


Объявил переменные, а вот что сделать с sum += не знаю

this.widjetObj.html(local.goods + " " + num + " " + local.amount + " " + sum + " Руб.");
		localStorage.setItem(this.cardID, JSON.stringify(this.DATA));

И тут не ясно

laimas 19.06.2016 22:48

Ну а для чего вы считаете общую сумму?

Meattale 20.06.2016 08:27

Цитата:

Сообщение от laimas (Сообщение 419956)
Ну а для чего вы считаете общую сумму?

Чтобы подвести итого. 18% налога (в сумме) + стоимость* кол во = общая\

laimas 20.06.2016 11:41

Вы НДС считаете по общей сумме, тогда зачем вам нужно было помещать ее значение в каждую характеристику товара? Ну коли у вас статика, все расписано в переменных, ну пропишите и значение НДС в переменной

var local =     {
   //...
   //...
   nds = .18


Цитата:

Сообщение от Meattale
Чтобы подвести итого

Ну и? Это что считает?

for(var idkey in this.DATA) {
num += parseInt(this.DATA[idkey].num);
sum += parseFloat(parseInt(this.DATA[idkey].num) * parseFloat(this.DATA[idkey].price));
}

Найти 18% от суммы общей проблема? sum += sum * nds. Куда выводить проблема? Ну так решайте сами.

Meattale 20.06.2016 16:25

Дело все в том, что задать значение в строке товаров нужно потому, что ндс не всегда 18 процентов. И получается чтобы для каждого товара выводило инфу сколько ндс в процентах, следом сумму ндс от цены и далее ндс от цены + итого цена за товар.
Проблема именно в том, чтобы ввести переменную и заставить ее выводиться из строки
var priceList = {
	"001" : {"id" : "001", "subid" : {}, "name" : "IPhone 5", "subname" : {}, "nds" : "18", "price" : "100"},
	"002" : {"id" : "002", "subid" : {}, "name" : "IPad MINI", "subname" : {}, "price" : "200"}
	};

laimas 20.06.2016 17:33

А сразу указывать с НДС цену товара что нельзя?

Если надо, ну так у вас во-первых не строка, а объект, свойства которого вы получаете: this.DATA[idkey].num, this.DATA[idkey].price и т.д., ну какие проблемы получить НДС - this.DATA[idkey].nds.

Во-вторых проценты НДС, это часть от 100, и 18% нужно записывать не как 18, а как .18 или 0.18. Коли прописываете этот объект руками, то записывать можно так (числа совсем не обязательно обрамлять кавычками, как и имена свойств объекта)

var priceList = {
    "001" : {id : "001", subid : {}, name : "IPhone 5", subname : {}, nds : .18, price : 100},
    "002" : {id : "002", subid : {}, name : "IPad MINI", subname : {}, nds : .14, price : 200}
    };


Но не зависимо от того с этого ли объекта берутся свойства или уже из локального хранилища после JSON.parse, parseInt и parseFloat не нужен в расчетах. Собственно и id : "001" в объекте тоже не нужен, он и так прописан как свойство объекта priceList.

Вот только на изображении корзины надо полагать Всего, это за каждый товар, а значит эта цена должна быть с НДС, а итоговая сумма, это не

sum += parseFloat(parseInt(this.DATA[idkey].num) * parseFloat(this.DATA[idkey].price));

а сумма всех "Всего" за каждый товар. То есть при выводе таблицы корзины считаем Всего для каждого товара:

var tot = this.DATA[idkey].price * this.DATA[idkey].num + this.DATA[idkey].price * this.DATA[idkey].nds;  

sum += tot;

Meattale 20.06.2016 18:46

laimas,
Вот это уже более похоже на то, что мне нужно.
Дело в том, я не совсем понимаю что куда в данном случае вставить или что где объявить. Если не сложно - можно "на пальцах"
Цитата:

Сообщение от laimas
Вот только на изображении корзины надо полагать Всего, это за каждый товар, а значит эта цена должна быть с НДС, а итоговая сумма, это не

там всего это именно за этот товар. Итого по счету подводится внизу.

laimas 21.06.2016 05:03

Зачем парить мозги себе и покупателям НДС и ценой без нее, прекрасно зная, что по этой цене товар купить нельзя?

laimas 22.06.2016 12:41

Meattale,

исправлено, цена набранного товара должно быть:

var price = this.DATA[idkey].price + this.DATA[idkey].price * this.DATA[idkey].nds,  total = price * this.DATA[idkey].num;


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