Javascript 通过Formset循环求和值-JQuery
我有一个Django表单集,其中每个表单都有一个class=Javascript 通过Formset循环求和值-JQuery,javascript,jquery,Javascript,Jquery,我有一个Django表单集,其中每个表单都有一个class=amount2的金额。每次使用该类更改这些输入中的任何一个时,我都希望使用classamount2重新合计所有输入的值。目前我正在尝试这个 $('.amount2').on("input", function() { var sum = 0 $('.amount2').each(function() { sum += $(this).val(); console.log(sum) }) }
amount2
的金额。每次使用该类更改这些输入中的任何一个时,我都希望使用classamount2
重新合计所有输入的值。目前我正在尝试这个
$('.amount2').on("input", function() {
var sum = 0
$('.amount2').each(function() {
sum += $(this).val();
console.log(sum)
})
})
当我记录sum
时,我得到0,尽管我在输入中输入了5。所以我试着把它拨回一点,然后这样做
$('.amount2').on("input", function() {
var sum = 0
$('.amount2').each(function() {
sum += 10;
console.log(sum)
})
})
该日志返回打印数字10,正如我在一次输入时预期的那样,在下一次输入时打印20
那么,我的第一部分出了什么问题
已更新
{% for form in formset.forms %}
<table id = 'manifest-table25' class="manifest-table2" width=100%>
{% csrf_token %}
<tbody width=100%>
<tr class="manifest-row">
<td width = 17.5% class="productCode" onchange="populateProduct(this)">{{form.ProductCode}}</td>
<td width = 32.5% class="description">{{form.DescriptionOfGoods}}</td>
<td width = 12.5% class="quantity" oninput="calculateUnit(this)">{{form.UnitQty}}</td>
<td width = 12.5% class="unitType">{{form.Type}}</td>
<td width = 10.5% class="price" oninput="calculate(this)">{{form.Price}}</td>
<td width = 12.5% class="amount2">{{form.Amount}}</td>
{% with url_name=request.resolver_match.url_name %}
{% if url_name == 'EditQuoteView' %}
<td>{{form.DELETE}}</td>
{% endif %}
{% endwith %}
{{form.id}}
</tr>
</tbody>
</table>
{% endfor %}
{%forformset.forms%}
{%csrf_令牌%}
{{form.ProductCode}
{{form.DescriptionOfGoods}}
{{form.UnitQty}
{{form.Type}
{{form.Price}}
{{form.Amount}}
{%的url\u name=request.resolver\u match.url\u name%}
{%if url_name='EditQuoteView%}
{{form.DELETE}
{%endif%}
{%endwith%}
{{form.id}
{%endfor%}
输入、文本区域、选择或内容可编辑值始终为字符串。(即使InputElement具有HTML属性type=“number”
)。记住在做数学之前要处理转换
使用parseInt(val,10)
,parseFloat(val)
,Number(val)
,或BigInt(val)
等将字符串转换为整数、浮点或数字
const$amount2=$('.amount2');
$amount2.on(“输入”,函数(){
设和=0
$amount2.每个(函数(){
总和+=数字(该值);
});
$(“#amount2 sum”)。文本(sum);
});代码>
html元素的确切类型是.amount2
?举个html的例子会很有帮助。为了消除一种可能性,我会尝试一些简单的方法,比如sum+=Number($(this).val())
。只是为了排除它不被类型化的可能性,这是一个很好的调试,但是您描述的结果的差异并没有加在一起(没有双关语的意思…好吧,也许有一点)。你确定第一个代码代表了你的实际代码吗?@slappy是的,它被复制并粘贴了-我尝试了下面的答案,但它们似乎仍然不起作用。输入是一个整数。我尝试了sum+=Number($(this).val())
,但它仍然返回0。我在上面添加了一段html。如果这是实际问题,用户不会看到5555
,而不是结果为0吗?var x=0;x+='5'控制台中的code>是“05”,而不是0,因为用户说结果是第一个代码段。所以他们对这个问题的解释中缺少了一些东西。是的@Taplar,但我在OP的代码中看到的唯一问题是他处理字符串与数字的方式。不过,你可能是对的,应用程序的另一部分出现了一些问题,或者OP没有用语言表达出来——因此,上面的代码和示例您的.reduce
回调可以是(sum,el)=>sum+=+el.value
。。。,sum
不会改变返回值value@slappy非常感谢,手指记忆有时很难:)