对表元素进行算术运算

时间:2016-12-23 01:42:51

标签: javascript html

您好,并提前感谢您。

我有一个表格,其中一些值预填充(如111.36),但当我尝试使用数字进行数学计算,或甚至显示数字时没有任何反应。

感谢您的协助, Marc(Javascript新增)

function calculate_it() {

    window.alert("In function calculate_it");

    var x = document.getElementByID("Numb01").value;
    window.alert(x);

  } //end function
<!DOCTYPE html>
<html>

<head>
  <meta charset="utf-8">
  <TITLE>Javascript Table</TITLE>
  <link href="style.css" type="text/css" rel="stylesheet">
</head>

<body>

  <h3>A demonstration of calculators</h3>

  <table id="t01">
    <caption>Chek this out!</caption>

    <tr>
      <th>Date</th>
      <th>Number 1</th>
      <th>Number 2</th>
      <th>Number 3</th>
      <th>Number 4</th>
    </tr>

    <tr>
      <td>
        <input type="text" id="Date01" value="WED21DEC16" size="10" />
      </td>
      <td>
        <input type="number" id="Numb01" value=111.36 size="5" />
      </td>
      <td>
        <input type="number" id="Numb02" value=222.36 size="5" />
      </td>
      <td>
        <input type="number" id="Numb03" value=333.36 size="5" />
      </td>
      <td>
        <input type="number" id="Numb04" value=444.36 size="5" />
      </td>
    </tr>


    <tr>
      <td>
        <input type="text" id="Date02" value="WED22DEC16" size="10" />
      </td>
      <td>
        <input type="number" id="Numb05" value=555.36 size="5" />
      </td>
      <td>
        <input type="number" id="Numb06" value=666.36 size="5" />
      </td>
      <td>
        <input type="number" id="Numb07" value=777.36 size="5" />
      </td>
      <td>
        <input type="number" id="Numb08" value=888.36 size="5" />
      </td>
    </tr>


    <TR>
      <td height="20" ColSpan="5"></td>
    </TR>

    <TR>
      <td height="20" ColSpan="2"></td>
      <td ColSpan="2" class='alnright'>Multiply:</td>
      <td>
        <input type="text" id="ActionMulti" value="" size="5" />
      </td>
    </TR>

    <TR>
      <td height="20" ColSpan="2"></td>
      <td ColSpan="2" class='alnright'>Add:</td>
      <td>
        <input type="text" id="ActionAdd" value="" size="5" />
      </td>
    </TR>

    <TR>
      <td height="20" ColSpan="2"></td>
      <td ColSpan="2" class='alnright'>Percentage:</td>
      <td>
        <input type="text" id="ActionPercentage" value="" size="5" />
      </td>
    </TR>

    <TR>
      <td height="20" ColSpan="2"></td>
      <td ColSpan="2" class='alnright'>----------</td>
      <td>--------</td>
    </TR>

    <TR>
      <td height="20" ColSpan="2"></td>
      <td ColSpan="2" class='alnright'>Sum:</td>
      <td>
        <input type="text" id="Sum" value="" size="5" />
      </td>
    </TR>

  </table>
  <br>

  <p>Click the button to calculate the data</p>
  <button type="button" onclick="calculate_it()">calculate_it</button>

</body>

</html>

1 个答案:

答案 0 :(得分:1)

好吧,我猜你已经读过所有评论相同的评论:getElementById而不是getElementByID。请注意,JavaScript 区分大小写

成功运行代码需要做的只是简单的两件事:

  1. 将所有输入(数字)值存储在数组中。
  2. 使用缩减功能可以轻松获得multiplysumpercentage的结果。
  3. 例如:

    function calculate_it() {
      var inputs = document.querySelectorAll('input[type="number"]');
      var multiply = 0;
      var add = 0;
      var percentage = 0;
    
      // get the values of each input, map then and return
      // a new array with the parsed numbers
      var numbers = [].map.call(inputs, function (i) {
        return parseFloat(i.value);
      });
    
      multiply = numbers.reduce(function (n1, n2) {
        return n1 * n2;
      });
      add = numbers.reduce(function (n1, n2) {
        return n1 + n2;
      });
      percentage = numbers.reduce(function (n1, n2) {
        return (n1 / n2) * 100;
      });
    
      document.getElementById('ActionMulti').value = multiply.toFixed(2);
      document.getElementById('ActionAdd').value = add.toFixed(2);
      document.getElementById('ActionPercentage').value = percentage.toFixed(2);
      document.getElementById('Sum').value = (multiply + add + percentage).toFixed(2);
    }
    

    toFixed类的Number返回数字的字符串表示形式,其中最大小数位数作为参数传递。如果必要的话,它会对数字进行舍入(经典回合)。

    完整示例

    &#13;
    &#13;
    function calculate_it() {
      var inputs = document.querySelectorAll('input[type="number"]');
      var multiply = 0;
      var add = 0;
      var percentage = 0;
      
      // get the values of each input, map then and return
      // a new array with the parsed numbers
      var numbers = [].map.call(inputs, function (i) {
      	return parseFloat(i.value);
      });
     
      multiply = numbers.reduce(function (n1, n2) {
        return n1 * n2;
      });
      add = numbers.reduce(function (n1, n2) {
        return n1 + n2;
      });
      percentage = numbers.reduce(function (n1, n2) {
      	return (n1 * n2) / 100;
      });
      
       document.getElementById('ActionMulti').value = multiply.toFixed(2);
      document.getElementById('ActionAdd').value = add.toFixed(2);
      document.getElementById('ActionPercentage').value = percentage.toFixed(8);
      document.getElementById('Sum').value = (multiply + add + percentage).toFixed(2);
    }
    &#13;
    input {
      width: 100%;
    }
    &#13;
    <h3>A demonstration of calculators</h3>
    
    <table id="t01">
      <caption>Chek this out!</caption>
    
      <tr>
        <th>Date</th>
        <th>Number 1</th>
        <th>Number 2</th>
        <th>Number 3</th>
        <th>Number 4</th>
      </tr>
    
      <tr>
        <td>
          <input type="text" id="Date01" value="WED21DEC16" size="10" />
        </td>
        <td>
          <input type="number" id="Numb01" value=11.36 size="5" />
        </td>
        <td>
          <input type="number" id="Numb02" value=12.36 size="5" />
        </td>
        <td>
          <input type="number" id="Numb03" value=7.36 size="5" />
        </td>
        <td>
          <input type="number" id="Numb04" value=4.36 size="5" />
        </td>
      </tr>
    
    
      <tr>
        <td>
          <input type="text" id="Date02" value="WED22DEC16" size="10" />
        </td>
        <td>
          <input type="number" id="Numb05" value=8.36 size="5" />
        </td>
        <td>
          <input type="number" id="Numb06" value=6.36 size="5" />
        </td>
        <td>
          <input type="number" id="Numb07" value=10.36 size="5" />
        </td>
        <td>
          <input type="number" id="Numb08" value=8.36 size="5" />
        </td>
      </tr>
    
    
      <TR>
        <td height="20" ColSpan="5"></td>
      </TR>
    
      <TR>
        <td height="20" ColSpan="2"></td>
        <td ColSpan="2" class='alnright'>Multiply:</td>
        <td>
          <input type="text" id="ActionMulti" value="" size="5" />
        </td>
      </TR>
    
      <TR>
        <td height="20" ColSpan="2"></td>
        <td ColSpan="2" class='alnright'>Add:</td>
        <td>
          <input type="text" id="ActionAdd" value="" size="5" />
        </td>
      </TR>
    
      <TR>
        <td height="20" ColSpan="2"></td>
        <td ColSpan="2" class='alnright'>Percentage:</td>
        <td>
          <input type="text" id="ActionPercentage" value="" size="5" />
        </td>
      </TR>
    
      <TR>
        <td height="20" ColSpan="2"></td>
        <td ColSpan="2" class='alnright'>----------</td>
        <td>--------</td>
      </TR>
    
      <TR>
        <td height="20" ColSpan="2"></td>
        <td ColSpan="2" class='alnright'>Sum:</td>
        <td>
          <input type="text" id="Sum" value="" size="5" />
        </td>
      </TR>
    
    </table>
    <br>
    
    <p>Click the button to calculate the data</p>
    <button type="button" onclick="calculate_it()">calculate_it</button>
    &#13;
    &#13;
    &#13;