我可以用 JS 在另一个 td 中获取 td 值和输入值的总和吗?

Posted

技术标签:

【中文标题】我可以用 JS 在另一个 td 中获取 td 值和输入值的总和吗?【英文标题】:Can I get the SUM of td value and input value inside another td with JS? 【发布时间】:2022-01-03 19:53:21 【问题描述】:

我有一个包含 td 值的表,并在另一个包含值的 td 中输入。

我想得到 td 值和包含输入的其他 td 的总和。

这是代码,但不能完美运行:

let gross = 0;
$(".total").each(function() 
  gross += parseFloat($(this).val());
);
document.getElementById('gross_amount').innerhtml = gross;
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <td>#</td>
      <td>Name</td>
      <td>Age</td>
      <td>Salary</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Hazem</td>
      <td>20</td>
      <td class="total">50.00</td>
    </tr>
    <tr>
      <td>2</td>
      <td>John</td>
      <td>25</td>
      <td><input class="total" type="text" value="60.00" /></td>
    </tr>
  </tbody>
  <div id="gross_amount"></div>
</table>

【问题讨论】:

【参考方案1】:

问题是因为一个元素是td,另一个是input,并且只有input 元素具有value 属性以供val() 读取。

要解决此问题,您可以使用 tagName 检测元素的类型,然后基于此检索 text()val()

let gross = 0;
$(".total").each(function() 
  let $el = $(this);
  gross += parseFloat(this.tagName == 'INPUT' ? $el.val() : $el.text());
);
$('#gross_amount').text(gross.toFixed(2));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
  <thead>
    <tr>
      <td>#</td>
      <td>Name</td>
      <td>Age</td>
      <td>Salary</td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Hazem</td>
      <td>20</td>
      <td class="total">50.00</td>
    </tr>
    <tr>
      <td>2</td>
      <td>John</td>
      <td>25</td>
      <td><input class="total" type="text" value="60.00" /></td>
    </tr>
  </tbody>
</table>
<div id="gross_amount"></div>

请注意,#gross_amount div 必须位于 &lt;table&gt; 元素之外才能使您的 HTML 有效。另外,如果您已经加载了 jQuery,那么您不妨保持代码一致,并使用它来更新 #gross_amount 元素。

【讨论】:

伙计,我真的很感激,非常感谢。这对我也有用,现在我明白了,非常感谢。

以上是关于我可以用 JS 在另一个 td 中获取 td 值和输入值的总和吗?的主要内容,如果未能解决你的问题,请参考以下文章

js 或者 jq 获取 Table 里面每一个td 里面的值

js怎么获取table标签下的thead标签下的<td>的值

怎么用js获取table中的td里的控件值?

Js中如何获取当前Table中的第几行?Sos,帮帮我这个小娃娃吧.

JS:当我点击一个 TD 元素时,如何获取它的 innerHTML?

如何用js将一个<span>中的内容加入到另一个<span中>