JavaScript 计算出错(参考之前的计算)

Getting Error in JavaScript Calculation (Referring to Previous Calculation)

我在尝试计算一个使用之前计算的数字的数字时遇到错误。

1st Calculation: Ending Depth - Starting Depth = Footage.

2nd Calculation: Footage / Rate of Penetration = Expected Hours to Drill.

第二次计算使用从第一次计算得出的素材。

我尝试了多种方法来做到这一点,包括添加另一个事件按钮,但我仍然收到似乎由 else{

触发的错误

有人知道这是怎么回事吗?

我有一个更长的代码,我已经尽可能地隔离了这个东西。

尝试创建另一个事件按钮,在这里完全失败。

function calculate() {
  intervalFootage("Interval-1-StartMD", "Interval-1-EndMD", "Interval-1-Footage");
  expectedHours("Interval-1-ROP", "Interval-1-Footage", "Interval-1-ExpectedHours");
}


function intervalFootage(startingDepth, endingDepth, output) {
  var starting = document.getElementById(startingDepth).value;
  var ending = document.getElementById(endingDepth).value;

  if (starting > -1 && ending > -1) {
    var answer = ending - starting;
  } else {
    var answer = "N/A";
  }
  document.getElementById(output).innerHTML = answer;
}

function expectedHours(rateofpenetration, intervallength, output) {
  var rop = document.getElementById(rateofpenetration).value;
  var length = document.getElementById(intervallength).value;

  if (rop > 0 && length > 0) {
    var hours = length / rop;
  } else {
    var hours = "N/A";
  }
  document.getElementById(output).innerHTML = hours;
}
<table style="width:100%">
  <tr>
    <th></th>
    <th>Interval 1</th>
  </tr>
  <tr>
    <td>Staring Depth (MD)</td>
    <th><input type="number" id="Interval-1-StartMD" name="Interval-1- StartMD" min="0"></th>
  </tr>
  <tr>
    <td>Ending Depth (MD)</td>
    <th><input type="number" id="Interval-1-EndMD" name="Interval-1-EndMD" min="0"></th>
  </tr>
  <tr>
    <td>Interval Footage (ft)</td>
    <th id="Interval-1-Footage"></th>
  </tr>
  <tr>
    <td>Expected Avg. ROP (ft/hr)</td>
    <th><input type="number" id="Interval-1-ROP" name="Interval-1-ROP" min="0"></th>
  </tr>
  <tr>
    <td>Expected Hours to Drill</td>
    <th id="Interval-1-ExpectedHours"></th>
  </tr>
</table>
<p></p>
<button onclick="calculate()">Calculate</button>

您似乎得到了错误的结果,因为这一行 var length = document.getElementById(intervallength).value; 实际上是在尝试获取 '' 元素的值,即 undefined。如果您试图获取之前插入到此 td 元素中的值,您应该像这样使用 innerHTMLinnerTextvar length = document.getElementById(intervallength).innerText;