我可以用 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 必须位于 <table>
元素之外才能使您的 HTML 有效。另外,如果您已经加载了 jQuery,那么您不妨保持代码一致,并使用它来更新 #gross_amount
元素。
【讨论】:
伙计,我真的很感激,非常感谢。这对我也有用,现在我明白了,非常感谢。以上是关于我可以用 JS 在另一个 td 中获取 td 值和输入值的总和吗?的主要内容,如果未能解决你的问题,请参考以下文章
js 或者 jq 获取 Table 里面每一个td 里面的值
js怎么获取table标签下的thead标签下的<td>的值
Js中如何获取当前Table中的第几行?Sos,帮帮我这个小娃娃吧.