Как создать функцию расчета со скидками? - PullRequest
0 голосов
/ 23 марта 2019

У меня есть базовый калькулятор для расчета стоимости работ, но мне нужно учитывать разные цены со скидками. Мне нужно рассчитать стоимость за час / день / месяц.

У меня есть три категории работников (свет / мед / макс. Оборудование) и три категории графика (8/12/24 часа). В зависимости от графика цена варьируется. Для легких 75 $ / 24ч, 100 $ / 12ч, 110 $ / 8ч. Для средних 80 $ / 24 часа, 130 $ / 12 часов, 140 $ / 8 часов. максимальный - 130 долл. США в сутки, 150 долл. США в сутки, 180 долл. США в сутки.

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

    <script type="text/javascript">
    function calculate() {
        var number = document.getElementsByName("number")[0].value;
        var equip = document.getElementsByName("equip")[0].value;
        var schedule = document.getElementsByName("schedule")[0].value;
        var day = (number * equip * schedule);
        var hour = (number  * equip);
        var month = (30.5 * equip * number * schedule);



    power = Math.round( day * 100 ) / 100;

        if(check(["number"])){
            document.getElementsByName("perday")[0].value = day + " $";
            document.getElementsByName("permonth")[0].value = month + " $";
            document.getElementsByName("perhour")[0].value = hour + " $";
        }

    }

    function check(elems){
        var f = true; 
        for(var i = 0; i < elems.length; i++){
            if(document.getElementsByName(elems[i])[0].value == ""){
                alert("enter all fields!");
                f = false;
                break;
            }
        }
        return f;
    }
    </script>





    <table border="0" cellpadding="1" cellspacing="0" style="width: 500px;">
    <tbody>

        <tr>
            <td>
                    number of employees
            </td>
            <td>
                <select name="number"><option value="1" selected>1</option> 
    <option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option>
                <option value="6">6</option><option value="7">7</option><option value="8">8</option><option value="9">9</option><option value="10">10</option></select>
            </td>
        </tr>

        <tr>
            <td>
                    Equipment
            </td>
            <td>
                <select name="equip"><option value="75" selected>light</option><option value="80">medium</option><option value="130">maximum</option></select>
            </td>
        </tr>
        <tr>
            <td>
                   Schedule
            </td>
            <td>
                <select name="schedule"><option value="8" selected>8-hour</option><option value="12">12-hour</option><option value="24">24-hour</option></select>
            </td>
        </tr>



         <tr>
            <td colspan="2" align="left">
                <input type="button" onclick="calculate();" value="calculate price" />
            </td>
        </tr>
    </tbody>
</table>

    <div>cost per hour: <input name="perhour"/></div>
    <div>cost per day: <input name="perday"/></div>
    <div>cost per month: <input name="permonth"/></div>

https://jsfiddle.net/DOOOS/fdLxu4sv/17/

1 Ответ

1 голос
/ 23 марта 2019

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

Я бы посоветовал прочитать немного больше о объектах , массивы и , переключатели .Чтобы вы понимали, почему это работает.

function getPrice(equip, schedule) {
  var price = {
    light: [75, 100, 110],
    medium: [80, 130, 140],
    maxium: [130, 150, 180]
  };

  switch (schedule) {
    case '8':
      return price[equip][2];
    case '12':
      return price[equip][1];
    case '24':
      return price[equip][0];
  }
}

function calculate() {

  var number = document.getElementsByName("number")[0].value;
  var equip = document.getElementsByName("equip")[0].value;
  var schedule = document.getElementsByName("schedule")[0].value;
  var day = (number * getPrice(equip, schedule) * schedule);
  var hour = (number * getPrice(equip, schedule));
  var month = (30.5 * getPrice(equip, schedule) * number * schedule);



  power = Math.round(day * 100) / 100;

  if (check(["number"])) {
    document.getElementsByName("perday")[0].value = day + " $";
    document.getElementsByName("permonth")[0].value = month + " $";
    document.getElementsByName("perhour")[0].value = hour + " $";
  }

}

function check(elems) {
  var f = true;
  for (var i = 0; i < elems.length; i++) {
    if (document.getElementsByName(elems[i])[0].value == "") {
      alert("enter all fields!");
      f = false;
      break;
    }
  }
  return f;
}
<table border="0" cellpadding="1" cellspacing="0" style="width: 500px;">
  <tbody>

    <tr>
      <td>
        number of employees
      </td>
      <td>
        <select name="number">
          <option value="1" selected>1</option>
          <option value="2">2</option>
          <option value="3">3</option>
          <option value="4">4</option>
          <option value="5">5</option>
          <option value="6">6</option>
          <option value="7">7</option>
          <option value="8">8</option>
          <option value="9">9</option>
          <option value="10">10</option>
        </select>
      </td>
    </tr>

    <tr>
      <td>
        Equipment
      </td>
      <td>
        <select name="equip">
          <option value="light" selected>light</option>
          <option value="medium">medium</option>
          <option value="maximum">maximum</option>
        </select>
      </td>
    </tr>
    <tr>
      <td>
        Schedule
      </td>
      <td>
        <select name="schedule">
          <option value="8" selected>8-hour</option>
          <option value="12">12-hour</option>
          <option value="24">24-hour</option>
        </select>
      </td>
    </tr>



    <tr>
      <td colspan="2" align="left">
        <input type="button" onclick="calculate();" value="calculate price" />
      </td>
    </tr>
  </tbody>
</table>

<div>cost per hour: <input name="perhour" /></div>
<div>cost per day: <input name="perday" /></div>
<div>cost pre month: <input name="permonth" /></div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...