powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Присвоение значений и вывод стоимости
6 сообщений из 6, страница 1 из 1
Присвоение значений и вывод стоимости
    #38995771
testme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Особо не разбираюсь в JS, но вот стоит задача сделать калькулятор:

Задача: При выборе "Письма" - "Простые" - "20 грамм" нужно выводить значение "20.01"
К примеру для писем:
Письма Простые 20(20.01) 40(25.25) 60(30.30) 80... 100...
Письма Заказные 20(22.01) 40(27.25) 60(33.01) 80... 100...
Письма 1-го класса 20(23.25) 40... 60... 80... 100...

3 вида, веса одинаковые но стоимость разная у всех.

Не могу понять как присвоить весу нужную цену в зависимости от выбранного вида и выводить в поле.

Помогите разобраться, если не сложно расписать не все а хотя бы на примере 2 видов по 1-2 значения веса.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
function calc() {
 
//вид отправления (письма, бандероли, карточки, посылки)
 var type_vidotpravleniya = document.getElementById("type_vidotpravleniya");
 
//веса отправлений (письма от 20 до 100, бандероли от 100 до 2000, карточки до 20, посылки от 500 до 20000)
 var type_vespisma = document.getElementById("type_vespisma");
 var type_vesbanderoli = document.getElementById("type_vesbanderoli");
 var type_veskartochki = document.getElementById("tipe_veskartochki");
 var type_vesposilki = document.getElementById("type_vesposilki");
 
//класс отправления (простые,заказные, 1-го класса)
 var type_prostie = document.getElementById("type_prostie");
 var type_zakaznie = document.getElementById("type_zakaznie");
 var type_1klass = document.getElementById("type_1klass");
 
//Результаты
 var result = document.getElementById("result_vidotpravleniya"); 
 var result = document.getElementById("result_ves");
 var result = document.getElementById("result");
 
 var price_vid = 0; 
 var price_ves = 0;
 var price = 0;
 
//Вывод веса в зависимости от вида отправления
if (type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value==1 ){
     type_type_vespisma.style.display="block";
     type_vesbanderoli.style.display="none";
     type_veskartochki.style.display="none";
     type_vesposilki.style.display="none";
 }else if (type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value==2 ){
    type_vesbanderoli.style.display="block";
    type_type_vespisma.style.display="none";
    type_veskartochki.style.display="none";
    type_vesposilki.style.display="none";
 }else if (type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value==3 ){
    type_veskartochki.style.display="block";
    type_type_vespisma.style.display="none";
    type_vesbanderoli.style.display="none";
    type_ves4.style.display="none"; 
 }else if (type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value==4 ){
    type_vesposilki.style.display="block";
    type_type_vespisma.style.display="none";
    type_vesbanderoli.style.display="none"; 
    type_veskartochki.style.display="none";
 }else{
    type_type_vespisma.style.display="none";
    type_vesbanderoli.style.display="none";
    type_veskartochki.style.display="none"; 
    type_vesposilki.style.display="none";
 }
 
 price_vidotpravleniya += parseInt(type_vid.options[type_vid.selectedIndex].value); 
 price_ves1 += parseInt(type_ves.options[type_ves.selectedIndex].value);
 price=price_vid + price_ves
 
 
 result_vescena.innerHTML = price_vidcena;
 
 result_vid.innerHTML = price_vid; 
 result_ves.innerHTML = price_ves;
 result.innerHTML = price;
 
}



Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
<table border="1">
 <tr>
  <!-- 1 "vid"// -->
  <td width="150">Вид отправления</td>
 
<td width="300"><select onchange="calc()" id="type_vidotpravleniya">
  <option value="" selected>Выбрать</option>
 <option value="1">Письма</option>
 <option value="2">Бандероли</option>
 <option value="3">Почтовые карточки</option>
 <option value="4">Посылки</option>
 </select>
</td>
<td width="200">Нет значения</td>
 </tr>
 <tr>
 <td width="150"> Класс отправления</td>
<td width="300"><select onchange="calc()" id="type_vespisma">
  <option value="" selected>Выбрать</option>
 <option value="10">Простые</option>
 <option value="20">Заказные</option>
 <option value="30">1-го класса</option>
  </select>
</td>
<td width="200">Нет значения</td>
 </tr>
 
 <!-- 2 "ves"// -->
 
 <tr>
 <td width="150">Вес отправления</td>
 <!-- Градация для писем// -->
<td width="300">
<select onchange="calc()" id="type_vespisma" style="display:none;">
 <option value="" selected>Выбрать</option>
 <option value="1">До 20 грамм</option>
 <option value="2">До 40 грамм</option>
 <option value="3">До 60 грамм</option>
 <option value="4">До 80 грамм</option>
</select>
 <!-- Градация для бандеролей// -->
<select onchange="calc()" id="type_vesbanderoli"  style="display: none;">
 <option value="" selected>Выбрать</option>
 <option value="5000">От 20 до 100 грамм</option>
 <option value="1000">До 120 грамм</option>
 <option value="550">До 140 грамм</option>
 <option value="550">До 160 грамм</option>
 <option value="550">До 180 грамм</option>
 <option value="5000">До 200 грамм</option>
 <option value="1000">До 220 грамм</option>
 <option value="550">До 240 грамм</option>
 <option value="550">До 260 грамм</option>
 <option value="550">До 280 грамм</option>
 <option value="550">До 300 грамм</option>
 <option value="1000">До 320 грамм</option>
 <option value="550">До 340 грамм</option>
 <option value="550">До 360 грамм</option>
 <option value="550">До 380 грамм</option>
 <option value="5000">До 400 грамм</option>
 <option value="1000">До 420 грамм</option>
 <option value="550">До 440 грамм</option>
 <option value="550">До 460 грамм</option>
 <option value="550">До 480 грамм</option>
 <option value="550">До 500 грамм</option>
 <option value="1000">До 520 грамм</option>
 <option value="550">До 540 грамм</option>
 <option value="550">До 560 грамм</option>
 <option value="550">До 580 грамм</option>
 <option value="5000">До 600 грамм</option>
 <option value="1000">До 620 грамм</option>
 <option value="550">До 640 грамм</option>
 <option value="550">До 660 грамм</option>
 <option value="550">До 680 грамм</option>
 <option value="550">До 700 грамм</option>
 <option value="1000">До 720 грамм</option>
 <option value="550">До 740 грамм</option>
 <option value="550">До 760 грамм</option>
 <option value="550">До 780 грамм</option>
 <option value="5000">До 800 грамм</option>
 <option value="1000">До 820 грамм</option>
 <option value="550">До 840 грамм</option>
 <option value="550">До 860 грамм</option>
 <option value="550">До 880 грамм</option>
 <option value="550">До 900 грамм</option>
 <option value="1000">До 920 грамм</option>
 <option value="550">До 940 грамм</option>
 <option value="550">До 960 грамм</option>
 <option value="550">До 980 грамм</option>
 <option value="5000">До 1000 грамм</option>
 <option value="1000">До 1020 грамм</option>
 <option value="550">До 1040 грамм</option>
 <option value="550">До 1060 грамм</option>
 <option value="550">До 1080 грамм</option>
 <option value="550">До 1100 грамм</option>
 <option value="1000">До 1120 грамм</option>
 <option value="550">До 1140 грамм</option>
 <option value="550">До 1160 грамм</option>
 <option value="550">До 1180 грамм</option>
 <option value="5000">До 1200 грамм</option>
 <option value="1000">До 1220 грамм</option>
 <option value="550">До 1240 грамм</option>
 <option value="550">До 1260 грамм</option>
 <option value="550">До 1280 грамм</option>
 <option value="550">До 1300 грамм</option>
 <option value="1000">До 1320 грамм</option>
 <option value="550">До 1340 грамм</option>
 <option value="550">До 1360 грамм</option>
 <option value="550">До 1380 грамм</option>
 <option value="5000">До 1400 грамм</option>
 <option value="1000">До 1420 грамм</option>
 <option value="550">До 1440 грамм</option>
 <option value="550">До 1460 грамм</option>
 <option value="550">До 1480 грамм</option>
 <option value="550">До 1500 грамм</option>
 <option value="1000">До 1520 грамм</option>
 <option value="550">До 1540 грамм</option>
 <option value="550">До 1560 грамм</option>
 <option value="550">До 1580 грамм</option>
 <option value="5000">До 1600 грамм</option>
 <option value="1000">До 1620 грамм</option>
 <option value="550">До 1640 грамм</option>
 <option value="550">До 1660 грамм</option>
 <option value="550">До 1680 грамм</option>
 <option value="550">До 1700 грамм</option>
 <option value="1000">До 1720 грамм</option>
 <option value="550">До 1740 грамм</option>
 <option value="550">До 1760 грамм</option>
 <option value="550">До 1780 грамм</option>
 <option value="5000">До 1800 грамм</option>
 <option value="1000">До 1820 грамм</option>
 <option value="550">До 1840 грамм</option>
 <option value="550">До 1860 грамм</option>
 <option value="550">До 1880 грамм</option>
 <option value="550">До 1900 грамм</option>
 <option value="1000">До 1920 грамм</option>
 <option value="550">До 1940 грамм</option>
 <option value="550">До 1960 грамм</option>
 <option value="550">До 1980 грамм</option>
 <option value="5000">До 2000 грамм</option>
</select>
 <!-- Градация для почтовых карточек// -->
<select onchange="calc()" id="tipe_veskartochki" style="display:none;">
 <option value="" selected>Выбрать</option>
 <option value="5000">До 20 грамм</option>
</select>
 <!-- Градация для посылок// -->
<select onchange="calc()" id="type_vesposilki" style="display:none;">
 <option value="" selected>Выбрать</option>
 <option value="5000">До 500 грамм</option>
 <option value="5000">До 1000 грамм</option>
 <option value="5000">До 1500 грамм</option>
 <option value="5000">До 2000 грамм</option>
 <option value="5000">До 2500 грамм</option>
 <option value="5000">До 3000 грамм</option>
 <option value="5000">До 3500 грамм</option>
 <option value="5000">До 4000 грамм</option>
 <option value="5000">До 4500 грамм</option>
 <option value="5000">До 5000 грамм</option>
 <option value="5000">До 5500 грамм</option>
 <option value="5000">До 6000 грамм</option>
 <option value="5000">До 6500 грамм</option>
 <option value="5000">До 7000 грамм</option>
 <option value="5000">До 7500 грамм</option>
 <option value="5000">До 8000 грамм</option>
 <option value="5000">До 6500 грамм</option>
 <option value="5000">До 7000 грамм</option>
 <option value="5000">До 7500 грамм</option>
 <option value="5000">До 8000 грамм</option>
 <option value="5000">До 8500 грамм</option>
 <option value="5000">До 9000 грамм</option>
 <option value="5000">До 9500 грамм</option>
 <option value="5000">До 10000 грамм</option>
</select>
</td>
<td width="400"><span id="result_">0</span> руб. (Тариф ФГУП "Почта России")</td>
 </tr>
 </table>
...
Рейтинг: 0 / 0
Присвоение значений и вывод стоимости
    #38995862
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
testme, Java и JavaScript - это не одно и то же.

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
<html>
<head>
<script>
var pricelist = {
	pisma: {
		prostie: {
			20: 20.01,
			40: 25.25,
			60: 30.30
		},
		zakaznie: {
			20: 22.01,
			40: 27.25,
			60: 33.01
		},
		klass1: {
			20: 23.25,
			40: 25.25,
			60: 30.30
		}
	},
	banderoli: {
	
	},
	kartochki: {
	
	},
	posylki: {
	
	}
};

function calc() {
	var vidotpravleniya	= type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value;
	var vidpisma = type_vidpisma.options[type_vidpisma.selectedIndex].value;
	var vespisma = type_vespisma.options[type_vespisma.selectedIndex].value;
	
	if (vidotpravleniya !== "" && vidpisma !== "" && vespisma !== "") {
		document.getElementById("tsena").innerHTML = pricelist[vidotpravleniya][vidpisma][vespisma];
	} else {
		document.getElementById("tsena").innerHTML = "";
	}
}
</script>
</head>
<body>
Цена: <span id="tsena"></span><br>
<select onchange="calc()" id="type_vidotpravleniya">
	<option value="" selected>Выбрать</option>
	<option value="pisma">Письма</option>
	<!-- option value="banderoli">Бандероли</option>
	<option value="kartochki">Почтовые карточки</option>
	<option value="posylki">Посылки</option -->
</select><br>
<select onchange="calc()" id="type_vidpisma">
	<option value="" selected>Выбрать</option>
	<option value="prostie">Простые</option>
	<option value="zakaznie">Заказные</option>
	<option value="klass1">1-го класса</option>
</select>
<select onchange="calc()" id="type_vespisma">
	<option value="" selected>Выбрать</option>
	<option value="20">До 20 грамм</option>
	<option value="40">До 40 грамм</option>
	<option value="60">До 60 грамм</option>
</select>
</body>
</html>



Модератор: Тема перенесена из форума "Java".
...
Рейтинг: 0 / 0
Присвоение значений и вывод стоимости
    #38995956
testme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot yelena]testme, Java и JavaScript - это не одно и то же.

yelena, огромное вам спасибо!

Извините, буду внимательнее.
...
Рейтинг: 0 / 0
Присвоение значений и вывод стоимости
    #39001334
testme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yelena, а еще не могли бы подсказать как выводить в поле вес для писем 20 40 60 80 100, для бандеролей 20 40 60 80 100 120 ... 2000, а для карт только 20

раньше делал вот так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
if (type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value==1 ){
	 type_type_vespisma.style.display="block";
	 type_vesbanderoli.style.display="none";
	 type_veskartochki.style.display="none";
	 type_vesposilki.style.display="none";
 }else if (type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value==2 ){
	type_vesbanderoli.style.display="block";
	type_type_vespisma.style.display="none";
	type_veskartochki.style.display="none";
	type_vesposilki.style.display="none";
 }else if (type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value==3 ){
 	type_veskartochki.style.display="block";
	type_type_vespisma.style.display="none";
	type_vesbanderoli.style.display="none";
	type_ves4.style.display="none"; 
 }else if (type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value==4 ){
	type_vesposilki.style.display="block";
	type_type_vespisma.style.display="none";
	type_vesbanderoli.style.display="none"; 
	type_veskartochki.style.display="none";
 }else{
	type_type_vespisma.style.display="none";
	type_vesbanderoli.style.display="none";
	type_veskartochki.style.display="none"; 
	type_vesposilki.style.display="none";
 }



Сейчас что-то не могу сообразить как соединить Ваш код с моим)
...
Рейтинг: 0 / 0
Присвоение значений и вывод стоимости
    #39001801
yelena
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
testme, и что вы делали неделю? Писали мой код? Никто за вас вашу зарплату зарабатывать не будет. Я тем более. Не умеете делать - не беритесь. Напрягаться, я вижу, вы не особенно хотите.

Варианты (<option>) в последнем селекте генерируются из прайс-листа и кешируются.

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
<!DOCTYPE html>
<html>
<meta charset="windows-1251">
<head>
<script>
var pricelist = {
	pisma: {
		prostie: {
			20: 20.01,
			40: 25.25,
			60: 30.30,
			80: 35,
			100: 40
		},
		zakaznie: {
			20: 22.01,
			40: 27.25,
			60: 33.01,
			80: 40,
			100: 45			
		},
		klass1: {
			20: 23.25,
			40: 25.25,
			60: 30.30,
			80: 40,
			100: 45			
		}
	},
	banderoli: {
		prostie: {
			20: 20.01,
			40: 25.25,
			60: 30.30,
			80: 40,
			100: 45,
			120: 50,
			140: 55,
			2000: 60
		},
		zakaznie: {
			20: 22.01,
			40: 27.25,
			60: 33.01,
			80: 40,
			100: 45,
			120: 50,
			140: 55,
			2000: 65			
		},
		klass1: {
			20: 23.25,
			40: 25.25,
			60: 30.30,
			80: 40,
			100: 45,
			120: 50,
			140: 55,
			2000: 70			
		}	
	},
	kartochki: {
		prostie: {
			20: 20.01
		},
		zakaznie: {
			20: 22.01
		},
		klass1: {
			20: 23.25
		}	
	},
	posylki: {
		prostie: {
			500: 200,
			1000: 400,
			1500: 600
		},
		zakaznie: {
			500: 250,
			1000: 450,
			1500: 650
		},
		klass1: {
			500: 300,
			1000: 500,
			1500: 700
		}	
	}
};

var vid;
var klass;
var ves;

function reset() {
	type_klassotpravleniya.selectedIndex = 0;
	type_vesotpravleniya.selectedIndex = 0;
	calc();
}

function calc() {
	vid	= type_vidotpravleniya.options[type_vidotpravleniya.selectedIndex].value;
	klass = type_klassotpravleniya.options[type_klassotpravleniya.selectedIndex].value;
	ves = type_vesotpravleniya.options[type_vesotpravleniya.selectedIndex].value;
	
	if (vid !== "" && klass !== "" && ves !== "") {
		document.getElementById("tsena").innerHTML = pricelist[vid][klass][ves];
	} else {
		if (vid === "") {
			type_klassotpravleniya.selectedIndex = 0;
		}
		getVesOptions();
		document.getElementById("tsena").innerHTML = "";
	}
}

var ves_options = {};

function getVesOptions() {

	var select = document.getElementById("type_vesotpravleniya");
	select.innerHTML = "";
		
	if (vid !== "" && klass !== "") {
	
		if (ves_options[vid] !== undefined && ves_options[vid][klass] !== undefined) {
			select.innerHTML = ves_options[vid][klass];
		} else {
			var ves_hash = pricelist[vid][klass];
			select.options[0] = new Option("Выбрать", "", true, true);
			for (var key in ves_hash) {
				select.options[select.options.length] = new Option("До " + key + " грамм", key);
			}
			ves_options[vid] = {};
			ves_options[vid][klass] = select.innerHTML;
		}
		
	} else {
		select.options[0] = new Option("Выбрать", "", true, true);	
	}
	
}
</script>
</head>
<body>
Цена: <span id="tsena"></span><br>
<select onchange="reset()" id="type_vidotpravleniya">
	<option value="" selected>Выбрать</option>
	<option value="pisma">Письма</option>
	<option value="banderoli">Бандероли</option>
	<option value="kartochki">Почтовые карточки</option>
	<option value="posylki">Посылки</option>
</select><br>
<select onchange="calc()" id="type_klassotpravleniya">
	<option value="" selected>Выбрать</option>
	<option value="prostie">Простые</option>
	<option value="zakaznie">Заказные</option>
	<option value="klass1">1-го класса</option>
</select>
<select onchange="calc()" id="type_vesotpravleniya">
	<option value="" selected>Выбрать</option>
</select>
</body>
</html>
...
Рейтинг: 0 / 0
Присвоение значений и вывод стоимости
    #39003744
testme
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yelena, Спасибо, Вам, за помощь.
Я за это ничего и не получаю, не смог разобраться, дальше будем курить учебники, а этот шаг, да попросил у Вас.
Можете в личку скинуть номер карты Сбер если есть, или Киви скажу спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Присвоение значений и вывод стоимости
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]