我有一个包含值的编辑框列表。一些是费用(type-id =“1”),其他是收入(type-id =“2”)。
它们被定义为:
<input class="change-handled form-control" type-id="@sub.CategoryTypeId" sub-category-id="@sub.SubCategoryId" data-id="@sub.CategoryBudgetId" style="text-align: right; width: 100%" type="number" value="@(sub.BudgetAmount.HasValue ? sub.BudgetAmount.ToString() : "")" />
目前,我有一个javascript函数将它们全部加起来,并显示总数:
var total = 0;
var $changeInputs = $('input.change-handled');
$changeInputs.each(function (idx, el) {
total += Number($(el).val());
});
$('#budgettedValue').text(total.toFixed(2));
这很有效。但是,我需要显示费用总额和收入总额。
所以,我希望它会像这样容易:
var total = 0;
var $changeInputs = $('input.change-handled');
$changeInputs.each(function (idx, el) {
if ($(idx).attr('type-id') == 1) {
totalExp += Number($(el).val());
}
if ($(idx).attr('type-id') == 2) {
totalInc += Number($(el).val());
}
});
这个,不起作用。有没有办法实现这个目标?
答案 0 :(得分:1)
当您访问idx
时,您正在使用jQuery包装索引attr
。而是使用el
作为元素。
此外,您不需要两个if
,因为如果一个1
类型不合适,那么它必须是2
类型
$changeInputs.each(function (idx, el) {
if ($(el).attr('type-id') == '1')
totalExp += Number($(el).val());
else
totalInc += Number($(el).val());
});