Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Вытащить переменную из select и добавить в формулу (https://javascript.ru/forum/misc/68236-vytashhit-peremennuyu-iz-select-i-dobavit-v-formulu.html)

zoomx25 03.04.2017 22:52

Вытащить переменную из select и добавить в формулу
 
Здравствуйте!

Помогите пожалуйста разобраться.

Имеется два типа приборов, они сдаются в аренду по кол-во дней. Срок делится на 4 части
Для одного прибора
3-7 дней - 5500 т.р. (сумма 1 день)
8-14 дней - 4500 т.р. (сумма 1 день)
15-30 дней - 4000 т.р. (сумма 1 день)
31+ дней - 3500 т.р. (сумма 1 день)

Для второго прибора

3-7 дней - 6000 т.р. (сумма 1 день)
8-14 дней - 5000 т.р. (сумма 1 день)
15-30 дней - 4500 т.р. (сумма 1 день)
31+ дней - 4000 т.р. (сумма 1 день)

Расчет происходит следующим образом
Из списка выбирается прибор и вводится кол-во дней.

Вот код, который пытался написать самостоятельно

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
</style>
<script type="text/javascript">
function calc_comlect() {
	var days3=+document.getElementById('days3').value // кол-во дней
	var rtk_uhf=+document.getElementById('rtk_uhf').value
	var rtk_gsm=+document.getElementById('rtk_gsm').value
	
  if (days3==0) {rtk_uhf=0;}
  else if (days3<=3) { rtk_uhf=6000;}
  else if (days3<=7) { rtk_uhf=days3*6000;}
  else if (days3<=14) { rtk_uhf=days3*5000;}
  else if (days3<=30) { rtk_uhf=days3*4500;}
  else if (days3>=31) { rtk_uhf=days3*4000;}
  if (days3==0) {rtk_gsm=0;}
  else if (days3<=3) { rtk_gsm=5500;}
  else if (days3<=7) { rtk_gsm=days3*5500;}
  else if (days3<=14) { rtk_gsm=days3*4500;}
  else if (days3<=30) { rtk_gsm=days3*4000;}
  else if (days3>=31) { rtk_gsm=days3*3500;}
	
	
	document.getElementById('rtk_uhf').value=rtk_uhf
	document.getElementById('rtk_gsm').value=rtk_gsm
	document.getElementById('summ').value=selectId*days3 // сумма дни + комплект
	
}
function change() {
    select = document.getElementById("selectId"); // Выбираем  select по id
    value = select.options[select.selectedIndex].value; // Значение value для выбранного option
}
var select, value;

</script>
</head>
<body>
<select size="1" id="selectId" onchange="change()">
<option value="rtk_uhf">UHF 35W</option>
<option value="rtk_gsm">GSM/GPRS</option>
</select>
<input type="text" name="days3" id="days3" /> <!-- ввод кол-во дней -->
<input type='text' id='summ' /> <!-- вывод суммы на экран -->
<input type="button" name="button" id="button" onClick="calc_comlect()" value="вычислить"
</body>
</html>

рони 04.04.2017 01:07

zoomx25,
<!DOCTYPE html>
<html>
<head><meta charset="utf-8">
<style type="text/css">
</style>
<script type="text/javascript">
function calc_comlect() {
  var days3= +document.getElementById('days3').value; // кол-во дней
  var gsm = document.getElementById('selectId').value == "rtk_gsm";
  var sumDay = gsm ? [5500,4500,4000,3500] : [6000,5000,4500,4000];
  var day = [3,7,14,30];
  sumDay = day.reduce(function(a,b,i) {
     return b <= days3  ? sumDay[i] : a
},0)
  document.getElementById('summ').value=sumDay *days3 // сумма дни + комплект

}


</script>
</head>
<body>
<select size="1" id="selectId" onchange="calc_comlect()">
<option value="rtk_uhf">UHF 35W</option>
<option value="rtk_gsm">GSM/GPRS</option>
</select>
<input type="text" name="days3" id="days3" /> <!-- ввод кол-во дней -->
<input type='text' id='summ' /> <!-- вывод суммы на экран -->
<input type="button" name="button" id="button" onClick="calc_comlect()" value="вычислить">
</body>
</html>

zoomx25 04.04.2017 01:12

Огромное спасибо!!!

zoomx25 04.04.2017 01:22

Есть еще один нюанс, аренда от 3-х дней, т.е. 1 день или 2 дня будут стоить как три.
Я совсем салага в этом деле.
Вот как проверялось в моем коде

else if (days3<=3) { rtk_gsm=5500;}

Если логическим путем сделать
var sumDay = gsm ? [16500,16500,5500,4500,4000,3500] : [18000,18000,6000,5000,4500,4000];
  var day = [1,2,3,7,14,30];



то не работает ((((

надо что то еще вот сюда добавить

sumDay = day.reduce(function(a,b,i) {
     return b <= days3  ? sumDay[i] : a },0)

рони 04.04.2017 01:47

zoomx25, добавить
var days3= +document.getElementById('days3').value; // кол-во дней
*!*
  days3 < 3 && (days3  = 3);
*/!*

j0hnik 04.04.2017 01:52

или так.
<!DOCTYPE html>
<html>
<head>
  <style type="text/css">
  </style>
</head>
<body>
  <select size="1" id="selectId" onchange="change()">
    <option value="rtk_uhf">UHF 35W</option>
    <option value="rtk_gsm">GSM/GPRS</option>
  </select>
  <input type="text" name="days3" id="days3" /> <!-- ввод кол-во дней -->
  <input type="button" name="button" id="button" onclick="calc_comlect()" value="вычислить">
  <input type='text' id='summ' value="" /> <!-- вывод суммы на экран -->
  <script type="text/javascript">

 function calc_comlect() {
  var days3 = document.getElementById('days3').value;// кол-во дней
  var value = document.getElementById('selectId').value; // Выбираем  select по id
  var bablo;

if (value == "rtk_uhf") {
  if (days3==0) {bablo=0;}
  else if (days3<=3) { bablo=18000;}
  else if (days3<=7) { bablo=days3*6000;}
  else if (days3<=14) { bablo=days3*5000;}
  else if (days3<=30) { bablo=days3*4500;}
  else  { bablo=days3*4000;}
}
  else if (value == "rtk_gsm") {
  if (days3==0) {value=0;}
  else if (days3<=3) { bablo=16500;}
  else if (days3<=7) { bablo=days3*5500;}
  else if (days3<=14) { bablo=days3*4500;}
  else if (days3<=30) { bablo=days3*4000;}
  else  { bablo=days3*3500;}
}
  document.getElementById('summ').value = bablo; // сумма дни + комплект
}
</script>
</body>
</html>

zoomx25 04.04.2017 02:07

Цитата:

Сообщение от j0hnik (Сообщение 449182)
или так.
<!DOCTYPE html>
<html>
<head>
  <style type="text/css">
  </style>
</head>
<body>
  <select size="1" id="selectId" onchange="change()">
    <option value="rtk_uhf">UHF 35W</option>
    <option value="rtk_gsm">GSM/GPRS</option>
  </select>
  <input type="text" name="days3" id="days3" /> <!-- ввод кол-во дней -->
  <input type="button" name="button" id="button" onclick="calc_comlect()" value="вычислить">
  <input type='text' id='summ' value="" /> <!-- вывод суммы на экран -->
  <script type="text/javascript">

 function calc_comlect() {
  var days3 = document.getElementById('days3').value;// кол-во дней
  var value = document.getElementById('selectId').value; // Выбираем  select по id
  var bablo;

if (value == "rtk_uhf") {
  if (days3==0) {bablo=0;}
  else if (days3<=3) { bablo=18000;}
  else if (days3<=7) { bablo=days3*6000;}
  else if (days3<=14) { bablo=days3*5000;}
  else if (days3<=30) { bablo=days3*4500;}
  else  { bablo=days3*4000;}
}
  else if (value == "rtk_gsm") {
  if (days3==0) {value=0;}
  else if (days3<=3) { bablo=16500;}
  else if (days3<=7) { bablo=days3*5500;}
  else if (days3<=14) { bablo=days3*4500;}
  else if (days3<=30) { bablo=days3*4000;}
  else  { bablo=days3*3500;}
}
  document.getElementById('summ').value = bablo; // сумма дни + комплект
}
</script>
</body>
</html>

Спасибо!!!!


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