Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 22.07.2016, 07:50
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Заделал рабочий прототип

<!DOCTYPE html>
<html lang="ru" dir="ltr">
<head>
<meta charset="utf-8">
</head>
<body>


<div><input type="text" id="day" value="1"/></div>
<br/>
<div id="list"></div>
<br/>
<button id="btn">Посчитать</button>
<br/>
<div id="result"></div>

<script>

var costs={},
	today,
    Cost;

costs.msk={
   name:'Мозгва',
   '0':970,
   '1':100,
   '12':300,
   '31':0
};

costs.nsk={
   name:'Новосибирск',
   '0':670,
   '1':200,
   '12':500,
   '31':0
};

costs.spb={
   name:'Питербурх',
   '0':170,
   '1':600,
   '12':600,
   '31':1
};


var html=[];

for(var key in costs)
   html.push('<option value="'+key+'"'+(costs[key]===Cost?' selected':'')+'>'+costs[key].name+'</option>');

document.getElementById('list').innerHTML='<select>'+html.join('')+'</select>';

var calc=function(e){

    /* если есть такой регион, то взять, иначе в мозгву, или какой-то дефольт */

    var region = (costs.hasOwnProperty(this.value))?costs[this.value]:costs.msk
	
	today=document.getElementById('day').value;	
	
    Cost = region.hasOwnProperty(today)?region[today]:region[0];

};

var show=function(){
	document.getElementById('result').innerHTML='<p>Сегодня цена доставки: '+Cost + ' руб.';
};


document.getElementById('btn').addEventListener('click',show);

list.querySelector('select').addEventListener('change',calc);

today=document.getElementById('day').value;

Cost=costs.msk[today]; /* дефаульт сити  */

</script>

</body>
</html>
Ответить с цитированием
  #22 (permalink)  
Старый 22.07.2016, 10:45
Интересующийся
Отправить личное сообщение для JimHudson Посмотреть профиль Найти все сообщения от JimHudson
 
Регистрация: 20.07.2016
Сообщений: 18

warren buffet,
спасибо, опять не то. меня по ходу никто не понял. ты есть вконтакте? скинь в личку ссылку
Ответить с цитированием
  #23 (permalink)  
Старый 22.07.2016, 10:58
Интересующийся
Отправить личное сообщение для JimHudson Посмотреть профиль Найти все сообщения от JimHudson
 
Регистрация: 20.07.2016
Сообщений: 18

Вот исходная функция.
var myCalculator = function(day){
 // стоимость доставки
 var cost = 0;
 switch(day) {
 // каждое первое число месяца стоимость равна 100у.е.
 case 1: cost = 100; break 
 // каждое двенадцатое число месяца стоимость равна 200у.е.
 case 12: cost = 200; break
 // каждое тридцать первое число месяца доставка бесплатна (таких дней всего 7 в году)
 case 31: cost = 0; break
 // по остальным дням мы не так щедры, доставка 500у.е.
 default: cost = 500;
 }
 // если поле custom_delivery_tax не существует
 if($('input[name="custom_delivery_tax"]').length == 0){
 // добавить его
 $('#checkout-form').append('<input type="hidden" name="custom_delivery_tax" value="0">');
 }
 // запись стоимости доставки в поле custom_delivery_tax
 $('input[name="custom_delivery_tax"]').val(cost);
}


она считает стоимость доставки в зависимости от дня месяца.

мне необходимо ее переделать, чтобы она считала стоимость в зависимости от региона.

например:
в функции прописать
регион 1, регион 2, регион 3= 200руб
регион 4, регион 5 =300 руб
регион 6 = 400 руб
и т.д.
за счет <select> создаем динамический список регионов.

покупатель выбирает свой регион из списка, а скрипт сравнивает соответствие регион-стоимость и выводит покупателю стоимость доставки, плюс прибавляет ее к общей стоимости. Роль прибавления стоимости выполняют три последние строки исходной функции.


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

вот. попытался подробно изложить. сейчас поищу пример уже готовой задумки.
Ответить с цитированием
  #24 (permalink)  
Старый 22.07.2016, 11:06
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

Сообщение от JimHudson Посмотреть сообщение
Роль прибавления стоимости выполняют три последние строки исходной функции.
Откуда такая вера в величие этих трех строчек, они к прибавлению стоимости никакого отношения НЕ ИМЕЮТ Если так хочется в это верить то сделай селекту name="custom_delivery_tax"

Последний раз редактировалось Rise, 22.07.2016 в 11:09.
Ответить с цитированием
  #25 (permalink)  
Старый 22.07.2016, 11:37
Интересующийся
Отправить личное сообщение для JimHudson Посмотреть профиль Найти все сообщения от JimHudson
 
Регистрация: 20.07.2016
Сообщений: 18

Rise,
с юкозом имел дело?
Ответить с цитированием
  #26 (permalink)  
Старый 22.07.2016, 11:48
Интересующийся
Отправить личное сообщение для JimHudson Посмотреть профиль Найти все сообщения от JimHudson
 
Регистрация: 20.07.2016
Сообщений: 18

http://uchudesami.ru/primer.jpg вот примерно то что нужно,но только с одним списком выбора
Ответить с цитированием
  #27 (permalink)  
Старый 22.07.2016, 12:38
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от JimHudson
они для расчета по дням, нам нужно по регионам
А я тебе сделал по регионам и по дням одновременно. Это значит выкидывай дни из той таблицы и получится

costs={};

costs.nsk= {name:Новосибирск, price:500};
costs.msk= {name:Москва, price:1500};
costs.spb= {name:Питер, price:700};


и попер набирать регионы с ценами.

Все, вопрос закрыт, еще раз напишешь "Непонел" пойдешь к прокурору.
Ответить с цитированием
  #28 (permalink)  
Старый 22.07.2016, 12:41
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Цитата:
регион 1, регион 2, регион 3= 200руб
costs.регион1 = 200
costs.регион2 = 200
costs.регион3 = 200


Только так, ибо отношение N:N ты никогда не осилишь.
Ответить с цитированием
  #29 (permalink)  
Старый 22.07.2016, 13:50
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Может тебе такая конструкция нужна:
var Region;
switch(Region)
{
//каждый регион имеет код, т.е он enum
case 0: 
case 1:
case 2:
//do something for these regions;
CustomRegionTax = 100;

//делаем тоже самое для других регионов
case 3: 
case 4:
case 5:
//do something for these regions;
CustomRegionTax = 200;

//и т.д.
//для каждого региона;

default:
CustomRegionTax = 0;
break;
}

Последний раз редактировалось Strongman, 22.07.2016 в 13:53.
Ответить с цитированием
  #30 (permalink)  
Старый 22.07.2016, 18:51
Интересующийся
Отправить личное сообщение для JimHudson Посмотреть профиль Найти все сообщения от JimHudson
 
Регистрация: 20.07.2016
Сообщений: 18

Strongman,
я запутался
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Калькулятор услуг tarantino Javascript под браузер 1 30.07.2015 00:21
Не работает Калькулятор просчета отопления igor700 Общие вопросы Javascript 5 26.02.2014 16:18
Калькулятор стоимости доставки Katik Элементы интерфейса 2 30.08.2012 15:32
Сделать калькулятор на сайт. asderru Работа 1 22.07.2010 13:46
Калькулятор работает ТОЛЬКО в ie6 (вопрос ламера) st_sinner Javascript под браузер 3 17.04.2010 18:11