Javascript Средняя сумма - PullRequest
       21

Javascript Средняя сумма

0 голосов
/ 17 апреля 2020

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

Четвертая кнопка предназначена для вычисления среднего значения введенных оценок. Моя проблема в том, что эти метки не хранятся в массиве ниже, они хранятся в консоли из пользовательского ввода. Я пытаюсь взять эти значения, хранящиеся в консоли, и определить среднее значение.

<form onsubmit="return false">
    <h4>Enter student results</h4>

    Name:
    <input type="text" id="name" autofocus required>

    Mark:
    <input type="number" id="mark" min="0" max="100" required>




    <div id="buttonBlock">
        <input type="button" id="Add" value="Add Result">
        <input type="button" id="Clear" value="Clear All">
        <input type="button" id="Display" value="Display All">
        <input type="button" id="Average" value="Calculate Average">
    </div>


</form>

<p id="result"></p>
let insertName = [];
let insertMark = [];
 //Arrays//

function getTotal() {
  let total = 0;
  let count = 0;

  for (let i = 0; i < mark.length; i++) {
    total += mark.length[i];
  }

  if (mark[i] !== undefined) {
    //legit value//
    count++;
    total += mark[i];
  }

  let avg = total / count;
  console.log(avg)

  document.getElementById("result").innerHTML = " The Average is " + total;
}

document.getElementById("Average").addEventListener("click", getTotal);

Ответы [ 2 ]

2 голосов
/ 17 апреля 2020

Вы объявили i дважды

let i = 0;

for (let i = 0; i < mark.length; i++)

Этот код никогда не выполнялся, поскольку ваша mark.length равна 0

total += mark[i]; 

И этот код также не выполняется, потому что mark [0] не определено

count++;
total += mark[i];

Tge avg = 0/0, что означает NaN, но общее значение по-прежнему равно 0

2 голосов
/ 17 апреля 2020

Невозможно увидеть источник метки, чтобы увидеть, являются ли они на самом деле числами. Вам может понадобиться разобрать в целое число. Не заметил вашего намерения. @Niels видел это.

mark = [1,2,3,4,5,6]

function getTotal() {
  let total = 0;
  let count = 0;
  //let i = 0;  // someone edited this to fix poor style

  for (let i = 0; i < mark.length; i++) 
    if (mark[i] !== undefined) {
      //legit value//
      count++;
      total += mark[i];
    }

  let avg = total / count;
  console.log(avg)

  document.getElementById("result").innerHTML = " The Average is " + total;
}

document.getElementById("Average").addEventListener("click", getTotal);
<button id="Average">Average</button>

<div id="result"></div>

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

...