【问题标题】:Finding The Average Of The Rows In A HTML Table查找 HTML 表中行的平均值
【发布时间】:2019-02-28 00:10:43
【问题描述】:

我目前正在做一个项目,我需要在 HTML 表中找到某些行的平均值,当值发生更改时,该表会自动更新。我不知道从哪里开始,因为我们被分配了这个任务,只是被告知在没有任何先验知识的情况下学习 HTML、CSS 和 JavaScript,如果这个问题是基本的,那么抱歉。我需要将平均值放在“出现在包含它们的每一行上的位置。

<table id="gradeTable"> <!Table>
<thead>
<tr id="Header">
    <th>Student Name:</th>
    <th>Student Number:</th>
    <th>Assignment 1 %:</th>
    <th>Assignment 2 %:</th>
    <th>Assignment 3 %:</th>
    <th>Assignment 4 %:</th>
    <th>Assignment 5 %:</th>
    <th>Final Grade %:</th>
</tr>

</thead>
<tbody> 

<tr>
    <td id="Iden">Student A</td>
    <td id="Iden">172300</td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td id="Final"></td>
</tr>

<tr>
    <td id="Iden">Student B</td>
    <td id="Iden">172301</td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td id="Final"></td>
</tr>

<tr>
    <td id="Iden">Student C</td>
    <td id="Iden">172302</td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td><input type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);"/></td>
    <td id="Final"></td>
</tr>
</tbody>
</table>

【问题讨论】:

  • Stack Overflow 不是编程学校。我不理解那些在不教授材料的情况下分配作业的学校,但这是你的问题,而不是我们的问题。
  • 您好,Conor,请阅读有关如何使用Minimal, Complete, Verifiable Examples 提问的信息。如果您有一段不工作的特定代码,并且您在调试它方面做出了真诚的努力,那么您的问题将得到更好的接受。对于初学者,我建议通过 learn-js.org 上的准系统教程。

标签: javascript html average


【解决方案1】:

看看下面的解决方案。我已经通过他们自己的班级和 ID 识别了每个学生。在更改输入时,我获取输入的类,然后遍历与同一类匹配的每个输入值。我将这些值加起来除以输入的输入值的数量。

function assignmentGrade(inp) {
  var student = inp.className;
  var studentScores = document.getElementsByClassName(student);
  var totalScore = 0;
  var numberScored = 0;
  var avg = 0;
  if (studentScores) {
    for (var x = 0; x < studentScores.length; x++) {
      if (!isNaN(studentScores[x].value) && studentScores[x].value != "") {
        totalScore = totalScore + parseInt(studentScores[x].value);
        numberScored++;
      }
    }
    //
    if (numberScored > 0) {
      avg = (totalScore / numberScored).toFixed(2);;
      document.getElementById(student).innerHTML = avg;
    }
  }
}
<table id="gradeTable">
  <!Table>
  <thead>
    <tr id="Header">
      <th>Student Name:</th>
      <th>Student Number:</th>
      <th>Assignment 1 %:</th>
      <th>Assignment 2 %:</th>
      <th>Assignment 3 %:</th>
      <th>Assignment 4 %:</th>
      <th>Assignment 5 %:</th>
      <th>Final Grade %:</th>
    </tr>

  </thead>
  <tbody>

    <tr>
      <td>Student A</td>
      <td id="IdenA">172300</td>
      <td><input class="A" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="A" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="A" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="A" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="A" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td id="A"></td>
    </tr>

    <tr>
      <td>Student B</td>
      <td id="IdenB">172301</td>
      <td><input class="B" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="B" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="B" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="B" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="B" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td id="B"></td>
    </tr>

    <tr>
      <td>Student C</td>
      <td id="IdenC">172302</td>
      <td><input class="C" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="C" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="C" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="C" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td><input class="C" type="number" min="0" max="100" placeholder="-" onchange="assignmentGrade(this);" /></td>
      <td id="C"></td>
    </tr>
  </tbody>
</table>

【讨论】:

  • 非常感谢,这段代码真的很有帮助。我可能对它的某些部分稍后如何工作有一些问题,您能回答吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-20
  • 1970-01-01
  • 2021-12-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多