Функция процентного отображения пуста - PullRequest
0 голосов
/ 13 мая 2018

Это изображение screenshot показывает пример функциональности. Предполагается, что общая доля в вопросе H должна давать общий процент P на основе входных данных из вопроса E+F+G / B+C+D * 100, остальные формыРасчет для получения процента НЕ ОБСЛУЖИВАНО работает хорошо, но общая процентная доля не указана. Вот ссылка на мой jsfiddle

<!-- Function to calculate NOT SERVED % -->

<script type = "text/javascript" >

  $(function() {

    $('#CAA1').on('input', function() {
      calculate();
    });
    $('#CAA').on('input', function() {
      calculate();
    });

    function calculate() {
      var pPos = parseInt($('#CAA1').val());
      var pEarned = parseInt($('#CAA').val());
      var perc = "";
      if (isNaN(pPos) || isNaN(pEarned)) {
        perc = " ";
      } else {
        perc = ((pEarned / pPos) * 100).toFixed(3);
      }

      $('#pointsperc').val(perc);
    }

  }); </script>

<script type = "text/javascript" >
  $(function() {

    $('#CAB1').on('input', function() {
      calculate();
    });
    $('#CAB').on('input', function() {
      calculate();
    });

    function calculate() {
      var pPos = parseInt($('#CAB1').val());
      var pEarned = parseInt($('#CAB').val());
      var perc = "";
      if (isNaN(pPos) || isNaN(pEarned)) {
        perc = " ";
      } else {
        perc = ((pEarned / pPos) * 100).toFixed(3);
      }

      $('#points').val(perc);
    }

  }); </script>

<script type = "text/javascript" >
  $(function() {

    $('#CAC1').on('input', function() {
      calculate();
    });
    $('#CAC').on('input', function() {
      calculate();
    });

    function calculate() {
      var pPos = parseInt($('#CAC1').val());
      var pEarned = parseInt($('#CAC').val());
      var perc = "";
      if (isNaN(pPos) || isNaN(pEarned)) {
        perc = " ";
      } else {
        perc = ((pEarned / pPos) * 100).toFixed(3);
      }

      $('#pointed').val(perc);
    }

  }); //End of Function to calculate NOT SERVED

</script> 


<script type = "text/javascript" >
  //Function to calculate overall propotion in quesstion H

  function getPercentage() {

    var grade = ""; //declare a variable for grade
    var result = ""; //declare a variable for result

    //read the marks
    var Response_B4 = document.getElementByName('Response_B4').value;
    var Response_C4 = document.getElementByName('Response_C4').value;
    var Response_D4 = document.getElementByName('Response_D4').value;
    var Response_E41 = document.getElementByName('Response_E41').value;
    var Response_E43 = document.getElementByName('Response_E43').value;
    var Response_E44 = document.getElementByName('Response_E44').value;



    //calculate the total marks (using double notation technique)
    var BCD = Response_B4 - (-Response_C4) - (-Response_D4);
    var EFG = Response_E41 - (-Response_E43) - (-Response_E44);

    //get the average marks
    var averageMarks = BCD / EFG;


    //display the results
    document.getElementByName('Response_F4').value = averageMarks;

  } //end of function getpercentage

  </script>

1 Ответ

0 голосов
/ 13 мая 2018

У вас много ошибок в HTML-разметке, и при вставке JavaScript в скрипту или фрагмент StackOverflow вы не должны использовать тег <script>.

  • Тогда вы никогда не вызывали *Функция 1006 * для расчета общего процента.

  • Вы не управляете делением на ноль в своей функции getPercentage().

  • Нетdocument.getElementByName, но doucment.getElementsByName обратите внимание на множественное число, и, прежде всего, когда вы используете jquery, просто следуйте одному синтаксису и используйте $("input[name='my-name']") для удаления элемента по имени.

  • Вам не нужно определять функцию calculate() для каждых 2 входов, делать ее универсальной, передавать идентификаторы входов и все.определите его только один раз

Я добавил функцию для проверки деления на ноль и возврата без вычисления или обновления ввода

См. демонстрацию ниже

$(function() {

  $('#CAA1,#CAA').on('input', function() {
    calculate('#CAA1', '#CAA');
    getPercentage();
  });
  $('#CAB1,#CAB').on('input', function() {
    calculate('#CAB1', '#CAB');
    getPercentage();
  });

  $('#CAC1,#CAC').on('input', function() {
    calculate('#CAC1', '#CAC');
    getPercentage();
  });
});

function calculate(input1, input2) {
  var pPos = parseInt($(input1).val());
  var pEarned = parseInt($(input2).val());
  var perc = "";
  if (isNaN(pPos) || isNaN(pEarned)) {
    perc = " ";
  } else {
    perc = ((pEarned / pPos) * 100).toFixed(3);
  }

  $('#pointsperc').val(perc);
}


function getPercentage() {

  var grade = ""; //declare a variable for grade
  var result = ""; //declare a variable for result

  //read the marks
  var Response_B4 = $('input[name="Response_B4"]').val();
  var Response_C4 = $('input[name="Response_C4"]').val();
  var Response_D4 = $('input[name="Response_D4"]').val();
  var Response_E41 = $('input[name="Response_E41"]').val();
  var Response_E43 = $('input[name="Response_E43"]').val();
  var Response_E44 = $('input[name="Response_E44"]').val();



  //calculate the total marks (using double notation technique)
  var BCD = Response_B4 - (-Response_C4) - (-Response_D4);
  var EFG = Response_E41 - (-Response_E43) - (-Response_E44);
  if (notZero(EFG)) {
    //get the average marks
    var averageMarks = BCD / EFG;

    //display the results
    $('input[name="Response_F4"]').val(averageMarks);

  }


} //end of function getpercentage

function notZero(n) {
  n = +n; // Coerce to number.
  if (!n) { // Matches +0, -0, NaN
    return false;
  }
  return n;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<fieldset>

  <legend style=" background-color: purple;color:#0099cc;color:white;">&nbsp; Generate OVC priority needs report in OLMIS for the past 6 months to assess number of OVC who needed services</legend>

  <div class="row">
    <div class="col-md-12">
      <div class="form-group">
        <label>B. Based on OLMIS priority needs report, how many OVC requested for commodity a under row A in the past 6
                    months </label>


        <div class="row">
          <div class="col-md-3">
            <div class="form-group">

              <input type="number" name="Response_B4" class="form-control" id="CAA1">
            </div>
          </div>
        </div>


        <div class="row">
          <div class="col-md-12">
            <div class="form-group">
              <label>C. Based on OLMIS priority needs report, how many OVC requested for commodity b under row B in
                                the past 6 months</label>


              <div class="row">
                <div class="col-md-3">
                  <div class="form-group">

                    <input type="number" name="Response_C4" class="form-control" Id="CAB1">
                  </div>
                </div>
              </div>


              <div class="row">
                <div class="col-md-12">
                  <div class="form-group">
                    <label>D. Based on OLMIS priority needs report, how many OVC requested for commodity c under
                                            row C in the past 6 months</label>


                    <div class="row">
                      <div class="col-md-3">
                        <div class="form-group">

                          <input type="number" name="Response_D4" class="form-control" Id="CAC1">
                        </div>
                      </div>
                    </div>
                  </div>

                  <legend style=" background-color: purple;color:#0099cc;color:white;">&nbsp; Generate OVC overall view report from OLMIS for the past 12 months to assess number of OVC who received procurable services in row g</legend>

                  <div class="row">
                    <div class="col-md-12">
                      <div class="form-group">
                        <label>E. Based on OLMIS priority needs report, how many OVC requested for commodity
                                                    c under row A in the past 6 months</label>



                        <div class="row">
                          <div class="col-md-3">
                            <div class="form-group">
                              <label> Received </label>

                              <input type="NUMBER" name="Response_E41" class="form-control" id="CAA">
                            </div>
                          </div>

                          <div class="row">
                            <div class="col-md-3">

                              <label> Not Served % </label>

                              <input type="TEXT" name="Response_E4" class="form-control" id="pointsperc" readonly>
                            </div>
                          </div>

                          <div class="col-md-12">

                            <label>F. Based on OLMIS priority needs report, how many OVC requested for
                                                            commodity c under row A in the past 6 months</label>



                            <div class="row">
                              <div class="col-md-3">
                                <div class="form-group">
                                  <label> Received </label>

                                  <input type="NUMBER" name="Response_E43" class="form-control" Id="CAB">
                                </div>
                              </div>

                              <div class="row">
                                <div class="col-md-3">

                                  <label> Not Served % </label>

                                  <input type="readonly" name="Response_E4" class="form-control" id="points" readonly>
                                </div>
                              </div>
                            </div>
                            <div class="col-md-12">

                              <label>G. Based on OLMIS priority needs report, how many OVC requested
                                                                for commodity c under row A in the past 6 months</label>



                              <div class="row">
                                <div class="col-md-3">
                                  <div class="form-group">
                                    <label> Received </label>

                                    <input type="NUMBER" name="Response_E44" class="form-control" Id="CAC">
                                  </div>
                                </div>

                                <div class="row">
                                  <div class="col-md-3">
                                    <div class="form-group">
                                      <label> Not Served % </label>

                                      <input type="readonly" name="Response_E4" class="form-control" id="pointed" readonly>
                                    </div>
                                  </div>

                                </div>

                                <div class="row">
                                  <div class="col-md-12">
                                    <div class="form-group">
                                      <label>H. Overall proportion of OVC served with the
                                                                                listed services within 12 months</label>


                                      <div class="row">
                                        <div class="col-md-3">
                                          <div class="form-group">

                                            <input type="number" name="Response_F4" class="form-control" readonly>
                                          </div>
                                        </div>
                                      </div>
                                    </div>
                                  </div>
                                </div>
                              </div>
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>

</fieldset>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...