Я использую gridview для вычисления ввода строк, но я не могу получить значения для последней строки для примера. Предположим, у меня есть 6 строк в моем представлении сетки, поэтому мой нижний код работает нормально для 5 строк, но не рассматривает последнюю строку.
function HSACalculator(TotalContributionAmount, ddfequ) {
var taxPercent = 10;
var txtValue = 0;
var ddlValue = "";
var freq = 0;
var AnnualCost = 0;
var PerMonthPay = 0;
var MaxValuePerPay = 0;
var MaxValueAnnual = 0;
var grid = $(":asp(gvHSACalculator)")[0];
var cellPivot;
debugger;
if (grid.rows.length > 0) {
for (i = 1; i < grid.rows.length ; i++) {
cell = grid.rows[i].cells[1];
cellDDL = grid.rows[i].cells[2];
for (j = 0; j <= cell.childNodes.length; j++) {
if (cell.childNodes[j].type == "text") {
txtValue = cell.childNodes[j].value;
}
if (cellDDL.childNodes[j].type == "select-one") {
ddlValue = cellDDL.childNodes[j][cellDDL.childNodes[j].selectedIndex].value;
}
}
if (ddlValue != null) {
freq = getFrequencyValueNew(ddlValue);
AnnualCost = AnnualCost + freq * txtValue;
PerMonthPay = AnnualCost / 12;
}
}
var maxCont = document.getElementById("lblMaxContPerYear").innerHTML;
if (parseFloat(maxCont.replace("$", "").replace(",", "")) < parseFloat((Math.round(AnnualCost * 100) / 100))) {
alert("Annual Contribution can not be more than Max Contribution " + maxCont);
ddfreq = getFrequencyValue(ddfequ);
document.getElementById("lblDeductionPerPay").innerHTML = formatDollar(Math.round((AnnualCost / ddfreq) * 100) / 100);
document.getElementById("lblDeductionAnnual").innerHTML = formatDollar(Math.round(AnnualCost * 100) / 100);
document.getElementById("lblMaximumAnnual").innerHTML = formatDollar(Math.round(TotalContributionAmount * 100) / 100);
document.getElementById("lblTaxSavingPerPay").value = formatDollar((AnnualCost * taxPercent) / 100);
document.getElementById("lblTaxSavingAnnual").value = formatDollar((AnnualCost * taxPercent) / 100); // AnnualCost / 12;
}
else
{
ddfreq = getFrequencyValue(ddfequ);
document.getElementById("txtAnnualContribution").value = formatDollar(Math.round(AnnualCost * 100) / 100);
document.getElementById("txtActualPerDeduction").value = formatDollar(Math.round((AnnualCost / ddfreq) * 100) / 100);
document.getElementById("lblDeductionPerPay").innerHTML = formatDollar(Math.round((AnnualCost / ddfreq) * 100) / 100);
document.getElementById("lblDeductionAnnual").innerHTML = formatDollar(Math.round(AnnualCost * 100) / 100);
document.getElementById("lblMaximumAnnual").innerHTML = formatDollar(Math.round(TotalContributionAmount * 100) / 100);
document.getElementById("lblTaxSavingPerPay").innerHTML = formatDollar((AnnualCost * taxPercent) / 100);
document.getElementById("lblTaxSavingAnnual").innerHTML = formatDollar((AnnualCost * taxPercent) / 100); // AnnualCost / 12;
document.getElementById("lblMaxContPerYear").innerHTML = formatDollar(Math.round((TotalContributionAmount) * 100) / 100);
}'
}
return false;
}
Можете ли вы попробовать следующее:
for (i = 0; i < grid.rows.length ; i++)
вместо того, который вы использовали выше, поскольку индекс строки сетки всегда начинается с 0, а не 1 также устанавливает "i" меньше, чем длина строк сетки.
Пытаться
for (i = 1; i <= grid.rows.length ; i++)